Annex C (informative) Compatibility [diff]

C.4 C++ and ISO C++ 2014 [diff.cpp14]

C.4.1 Clause [lex]: lexical conventions [diff.cpp14.lex]

[lex.phases]
Изменение: Удаление поддержки триграфа как обязательной функции.
Обоснование: предотвращает случайное использование триграфов в необработанных строковых литералах и комментариях.
Влияние на исходную функцию: действительный код C ++ 2014, в котором используются триграфы, может быть недействительным или может иметь другую семантику в этом международном стандарте. Реализации могут выбрать перевод триграфов, как указано в C ++ 2014, если они появляются за пределами необработанного строкового литерала, как часть определяемого реализацией сопоставления символов физического исходного файла с базовым исходным набором символов.

[lex.ppnumber]
Изменение: pp-number может содержать и . Обоснование: необходимо включить шестнадцатеричные плавающие литералы. Влияние на исходную функцию: действительный код C ++ 2014 может не компилироваться или давать другие результаты в соответствии с этим международным стандартом. В частности, последовательности символов, такие как и, представляют собой три отдельных токена каждая в C ++ 2014, но один единственный токен в этом международном стандарте. p signP sign

0p+0 0e1_­p+0

#define F(a) b ## a
int b0p = F(0p+0);  // ill-formed; equivalent to “int b0p = b0p + 0;” in C++ 2014