5 Lexical conventions [lex]

5.10 Identifiers [lex.name]

identifier:
	identifier-nondigit
	identifier identifier-nondigit
	identifier digit
identifier-nondigit:
	nondigit
	universal-character-name
nondigit: one of
	a b c d e f g h i j k l m
	n o p q r s t u v w x y z
	A B C D E F G H I J K L M
	N O P Q R S T U V W X Y Z _
digit: one of
	0 1 2 3 4 5 6 7 8 9

Идентификатор - это произвольно длинная последовательность букв и цифр. Каждый universal-character-nameв идентификаторе должен обозначать символ, кодировка которого в ISO 10646 попадает в один из диапазонов, указанных в таблице 2. Начальный элемент не должен быть universal-character-name обозначением символа, кодировка которого попадает в один из диапазонов, указанных в таблице 3. Прописные и строчные буквы различаются. Все персонажи значительны.21

Таблица 2 - допустимые диапазоны символов
00A8 00AA 00AD 00AF 00B2-00B5
00B7-00BA 00BC-00BE 00C0-00D6 00D8-00F6 00F8-00FF
0100-167F 1681-180D 180F-1FFF
200B-200D 202A-202E 203F-2040 2054 2060-206F
2070-218F 2460-24FF 2776-2793 2C00-2DFF 2E80-2FFF
3004-3007 3021-302F 3031-D7FF
F900-FD3D FD40-FDCF FDF0-FE44 FE47-FFFD
10000-1FFFD 20000-2FFFD 30000-3FFFD 40000-4FFFD 50000-5FFFD
60000-6FFFD 70000-7FFFD 80000-8FFFD 90000-9FFFD A0000-AFFFD
B0000-BFFFD C0000-CFFFD D0000-DFFFD E0000-EFFFD
Таблица 3 - диапазоны запрещенных изначально символов (объединение символов)
0300-036F 1DC0-1DFF 20D0-20FF FE20-FE2F

Идентификаторы в таблице 4 имеют особое значение при появлении в определенном контексте. Когда они упоминаются в грамматике, эти идентификаторы используются явно, а не с использованием identifierграмматической продукции. Если не указано иное, любая двусмысленность относительно того, identifierимеет ли данное значение особое значение, разрешается интерпретировать токен как обычный identifier.

Таблица 4 - Идентификаторы со специальным значением
override final

Кроме того, некоторые идентификаторы зарезервированы для использования реализациями C ++ и не должны использоваться иначе; Диагностика не требуется.

  • Каждый идентификатор, содержащий двойное подчеркивание или начинающийся с подчеркивания, за которым следует заглавная буква , зарезервирован для реализации для любого использования. __

  • Каждый идентификатор, начинающийся с подчеркивания, зарезервирован для реализации для использования в качестве имени в глобальном пространстве имен.

В системах, в которых компоновщики не могут принимать расширенные символы, для universal-character-nameформирования допустимых внешних идентификаторов может использоваться кодировка . Например, для кодирования \u в файле universal-character-name. Расширенные символы могут создавать длинный внешний идентификатор, но C ++ не устанавливает ограничения на перевод значимых символов для внешних идентификаторов. В C ++ буквы верхнего и нижнего регистра считаются разными для всех идентификаторов, включая внешние идентификаторы.