Affected subclause: [lex.pptoken]
Rationale: Required for new features
. Effect on original feature: Valid C++ 2003 code may fail to compile or produce different results in
this International Standard
. Specifically, macros named
R,
u8,
u8R,
u,
uR,
U,
UR, or
LR will
not be expanded when adjacent to a
string-literal but will be interpreted as
part of the
string-literal. For example:
#define u8 "abc"
const char* s = u8"def";
Affected subclause: [lex.pptoken]
Change: User-defined literal string support
. Rationale: Required for new features
. Effect on original feature: Valid C++ 2003 code may fail to compile or produce different results in
this International Standard
. For example:
#define _x "there"
"hello"_x
Previously, #1 would have consisted of two separate preprocessing tokens and
the macro
_x would have been expanded
. In this International Standard,
#1 consists of a single preprocessing token, so the macro is not expanded
.