diff --git a/source/compatibility.tex b/source/compatibility.tex index ca0b977238..fe4f348384 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -1511,6 +1511,21 @@ string literal, as part of the implementation-defined mapping from physical source file characters to the basic source character set. +\ref{lex.ppnumber} +\change \grammarterm{pp-number} can contain \tcode{p} \grammarterm{sign} and +\tcode{P} \grammarterm{sign} +\rationale Necessary to enable hexadecimal floating literals. +\effect +Valid \CppXIV code may fail to compile or produce different results in +this International Standard. Specifically, character sequences like \tcode{0p+0} +and \tcode{0e1_p+0} are three separate tokens each in \CppXIV, but one single token +in this International Standard. + +\begin{codeblock} +#define F(a) b ## a +int b0p = F(0p+0); // ill-formed; equivalent to ``\tcode{int b0p = b0p + 0;}\!'' in C++ 2014 +\end{codeblock} + \rSec2[diff.cpp14.expr]{Clause \ref{expr}: expressions} \ref{expr.post.incr}, \ref{expr.pre.incr}