[diff.cpp11.lex] # Annex C (informative) Compatibility [[diff]](./#diff) ## C.5 C++ and ISO C++ 2011 [[diff.cpp11]](diff.cpp11#lex) ### C.5.2 [[lex]](lex "5 Lexical conventions"): lexical conventions [diff.cpp11.lex] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L1973) **Affected subclause:** [[lex.ppnumber]](lex.ppnumber) **Change:** [*pp-number*](lex.ppnumber#nt:pp-number "5.7 Preprocessing numbers [lex.ppnumber]") can contain one or more single quotes[.](#1.sentence-1) **Rationale:** Necessary to enable single quotes as digit separators[.](#1.sentence-2) **Effect on original feature:** Valid C++ 2011 code may fail to compile or may change meaning in this revision of C++[.](#1.sentence-3) For example, the following code is valid both in C++ 2011 and in this revision of C++, but the macro invocation produces different outcomes because the single quotes delimit a [*character-literal*](lex.ccon#nt:character-literal "5.13.3 Character literals [lex.ccon]") in C++ 2011, whereas they are digit separators in this revision of C++[.](#1.sentence-4) [*Example [1](#example-1)*: #define M(x, ...) __VA_ARGS__int x[2] = { M(1'2,3'4, 5) };// int x[2] = { 5 }; --- C++ 2011// int x[2] = { 3'4, 5 }; --- this revision of C++ — *end example*]