[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