https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70529
--- Comment #10 from Axel Naumann <g...@axel-naumann.de> --- (In reply to jos...@codesourcery.com from comment #9) > On Thu, 7 Apr 2016, manu at gcc dot gnu.org wrote: > It's simply the case that if the 'p' or 'P' is followed by a digit, rather > than by '+' or '-', then it forms part of the pp-number whatever standard > version is in use See, and that's the part I cannot find in the standard. I don't see 'P' or 'p' being part of a pp-number, according to [lex.ppnumber] in C++14. I don't see 0x123P2 being a valid pp-number in C++14. (In reply to Manuel López-Ibáñez from comment #8) > (In reply to Axel Naumann from comment #2) > > NB: Even if I would buy into the argument that diagnostics are limited by > > the tokens, I don't yet see why 'P' ends up being concated to the pp-number > > token in C++ < 1z. > > You have to run g++ (actually, cc1plus) under a debugger to see why. See > lex_number. Doing it in a different way would probably break a lot of other > things. I meant to say "I don't yet see why 'P' is *meant* to end up being concated to the pp-number token in C++ < 1z."