Czy błędne nazwy `char16_t` i` char32_t`?
Uwaga: Jestem pewien, że ktoś nazwie to subiektywnie, ale uważam, że jest to dość namacalne.
C ++ 11 daje nam nowe możliwościbasic_string
typystd::u16string
istd::u32string
, wpisz aliasy dlastd::basic_string<char16_t>
istd::basic_string<char32_t>
, odpowiednio.
Wykorzystanie podciągów"u16"
i"u32"
dla mnie w tym kontekście oznacza raczej „UTF-16” i „UTF-32”, co byłoby głupie, ponieważ C ++ nie ma oczywiście pojęcia o kodowaniu tekstu.
Nazwy faktycznie odzwierciedlają typy postacichar16_t
ichar32_t
, ale te wydają się błędnie nazywane. onesą niepodpisane, ze względu na brak podpisu ich typów bazowych:
[C++11: 3.9.1/5]:
[..] Typychar16_t
ichar32_t
oznaczają różne typy o takim samym rozmiarze, sygnaturze i wyrównaniu jakuint_least16_t
iuint_least32_t
, odpowiednio [..]
Ale potem wydaje mi się, że te nazwy naruszają konwencję, że takie niepodpisane typy mają nazwy zaczynające się'u'
i że użycie liczb jak16
bez zastrzeżeń według terminów takich jakleast
wskaż typy o stałej szerokości.
Moje pytanie brzmi:Czy wyobrażam sobie rzeczy, czy te nazwy są zasadniczo błędne?