Являются ли `char16_t` и` char32_t` неправильными?
NB: яЯ уверен, что кто-то назовет это субъективным, но я считаю, чтодовольно ощутимо.
C ++ 11 дает нам новоеbasic_string
типыstd::u16string
а такжеstd::u32string
введите псевдонимы дляstd::basic_string
а такжеstd::basic_string
соответственно.
Использование подстрок"u16"
а также"u32"
для меня в этом контексте скорее подразумеваетсяUTF-16" а также "UTF-32", что было бы глупо, поскольку в C ++, конечно, нет понятия кодирования текста.
На самом деле имена отражают типы символовchar16_t
а такжеchar32_t
, но они кажутся неправильно названными. Oниявляются без знака, из-за неподписанности их основных типов:
[C++11: 3.9.1/5]:
[..] Типыchar16_t
а такжеchar32_t
обозначают различные типы с тем же размером, подписью и выравниванием, что иuint_least16_t
а такжеuint_least32_t
соответственно [..]
Но тогда мне кажется, что эти имена нарушают соглашение о том, что такие неподписанные типы имеют имена, начинающиеся с'u'
и что использование чисел типа16
неквалифицированный такими терминами, какleast
указать типы фиксированной ширины.
Мой вопрос заключается в следующем:я воображаю вещи, или эти имена в корне неверны?