Являются ли `char16_t` и` char32_t` неправильными?
NB: I'm sure someone will call this subjective, but I reckon it's fairly tangible.
C ++ 11 дает нам новоеbasic_string
типыstd::u16string
а такжеstd::u32string
введите псевдонимы дляstd::basic_string<char16_t>
а такжеstd::basic_string<char32_t>
соответственно.
Использование подстрок"u16"
а также"u32"
для меня в этом контексте скорее подразумевается «UTF-16» и «UTF-32», что было бы глупо, поскольку в C ++, конечно, нет понятия кодирования текста.
На самом деле имена отражают типы символовchar16_t
а такжеchar32_t
, но они кажутся неправильно названными. Oниare без знака, из-за неподписанности их основных типов:
[C++11: 3.9.1/5]:
[..] Types char16_t
and char32_t
denote distinct types with the same size, signedness, and alignment as uint_least16_t
and uint_least32_t
, respectively [..]
Но тогда мне кажется, что эти имена нарушают соглашение о том, что такие неподписанные типы имеют имена, начинающиеся с'u'
и что использование чисел типа16
неквалифицированный такими терминами, какleast
указать типы фиксированной ширины.
Мой вопрос заключается в следующем:am I imagining things, or are these names fundamentally flawed?