Поддержка универсальных имен символов необязательна в C ++ 11? - PullRequest
1 голос
/ 16 апреля 2011

Просматривая новую спецификацию C ++ 11, я не могу найти ничего, что говорит , что поддержка универсальных имен символов определяется реализацией , как упоминает devx .Я не могу найти ссылку на реализацию определенного поведения для этого.Только 2.14.3. (5) что-то говорит о том, что писать в исполняемом файле, но я не вижу ничего другого.

Прав ли я, предполагая, что соответствующий компилятор C ++ 11 будет поэтому имеют поддержку \unnnn и \Unnnnnnnn?

Ответы [ 2 ]

1 голос
/ 14 июня 2011

Я не уверен, что полностью понимаю ваш вопрос, но буквальные спецификаторы u и U служат только для указания целочисленного типа данных - ничего не говорится о том, что представляет собой символ (или не говоря уже о том, какая кодировка предполагается). Подведем итог:

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

Что вы в конечном итоге делаете с этими типами, полностью зависит от вас. Литеральные спецификаторы L, u и U просто позволяют вам помещать литеральные константы в ваш код, и они существуют уже некоторое время (хотя я думаю, что строковый синтаксис u"..." и U"..." только официальными в C ++ 0x, как и типы char16_t и char32_t, которые являются действительно новыми типами, а не просто псевдонимами).

0 голосов
/ 16 апреля 2011

Насколько я понимаю, это уже относится к C ++ 98.Просто соответствующие компиляторы на этом этапе редки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...