在c++ 11中支持可选的通用字符名

Support for Universal-Character-Names optional in C++11?

本文关键字:字符 c++ 支持      更新时间:2023-10-16

在筛选新的c++ 11规范时,我找不到任何东西说通用字符名的支持是实现定义的,就像devx提到的那样。我找不到任何参考实现定义的行为。只有2.14.3.(5)说明了在可执行文件中应该写些什么,但是我看不到其他内容。

我是否假设一个符合标准的c++ 11编译器将因此具有unnnnUnnnnnnnn的支持?

我不确定我完全理解你的问题,但是文字说明符uU只用于指定整型数据类型-没有说什么构成字符(或者更不用说假定哪种编码)。总结:

char a1 = 'a', b1[] = "Hello";
wchar_t a2 = L'a', b2[] = L"Hello";
char16_t a3 = u'u1234', b3[] = u"Hello uABCD";
char32_t a4 = U'U5678ABCD', b4[] = U"Hello U10325476"; // not actually valid codepoints

最终如何处理这些类型完全取决于您。文字说明符LuU只是允许你在代码中放置文字常量,它们已经存在了一段时间(尽管我认为u"..."U"..."字符串语法只在c++ 0x中正式发布,类型char16_tchar32_t也是如此,它们是真正的新类型,而不仅仅是别名)。

我的理解是c++ 98已经是这样了。只是在这一点上兼容的编译器很少。