0xb*_*00d 12 c++ c++11 char16-t char32-t
这也char32_t和任何有关intXX_t.规范指出:
2.14.3.2:
包含单个c-char的char16_t文字的值等于其ISO 10646代码点值,前提是代码点可用单个16位代码单元表示.
5.3.3.1:
[..]特别是[...] sizeof(char16_t),sizeof(char32_t)和sizeof(wchar_t)是实现定义的
intXX_t除了评论它们是"可选的"(18.4.1)之外,我看不出有关类型的任何信息.
如果不char16_t保证是2个字节,那么它是否保证是16位(即使在1个字节的架构上!= 8位)?
Mar*_*ork 12
类型char16_t和char32_t分别表示与uint_least16_t和uint_least32_t相同的大小,符号和对齐的不同类型,称为基础类型.
这意味着char16_t至少为16位(但可能更大)
但我也相信:
包含单个c-char的char16_t文字的值等于其ISO 10646代码点值,前提是代码点可用单个16位代码单元表示.
提供相同的保证(虽然不太明确(因为您必须知道ISO 10646是UCS(注意UCS是兼容的,但与Unicode不完全相同))).
char16_t包含单个c-char 的文字的值等于其ISO 10646代码点值,前提是代码点可用单个16位代码单元表示.
如果char16_t不是至少16位宽,这是不可能满足的,所以相反,它保证至少是那么宽.