On Tue, Feb 27, 2018 at 9:41 AM, Jonathan Wakely <jwakely....@gmail.com> wrote: > Since the fix for PR c++/80955 any suffix on a string literal that > begins with an underscore is assumed to be a user-defined literal > suffix, not a macro. This assumption is invalid for a suffix beginning > with two underscores, because such names are reserved and can't be used > for UDLs anyway.
[lex.name]/3 reserves all identifiers containing double underscore, but the spaceless one-token form does not actually use such an identifier. See the (equally reserved) _Bq example in [over.literal]/8: double operator""_Bq(long double); // OK: does not use the reserved identifier _Bq ([lex.name]) double operator"" _Bq(long double); // uses the reserved identifier _Bq ([lex.name])