At [over.literal] I read, in the list of examples, that
double operator""_Bq(long double); is valid, whereas
double operator"" _Bq(long double); is ill-formed, which is apparently a consequence of the space right after "".
Now, from the linked page, I can easily get to [usrlit.suffix] with one click and I read that
Literal suffix identifiers that do not start with an underscore are reserved for future standardization.
Good, but where do I read why operator"" _Bq is invalid?
I've also read the description of user-defined-string-literal on cppreference, but to be honest I've found it a bit confusing.
Can anybody break that down with examples?
_Bqis a reserved name per eel.is/c++draft/lex.name#3.1 (_followed by uppercase letter). Note that the example_kmis fine.operator""_Bqis one pptoken, whereasoperator"" _Bqis two pptokens, and the second one can be expanded if an implementation defines a macro with (reserved) name that is_Bq.operator"" _Bq, it's about_Bqbeing it's own "thing" lexically.operator"" _Bqtryoperator"" _DEBUGand see what happens.