https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70529
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
So what do you suggest?
The thing is,
0x123p2
in C++11/C++14 is a single preprocessing token, but
0x123p-2
or
0x123p+2
are 3 preprocessing tokens:
pp-number:
digit
. digit
pp-number digit
pp-number identifier-nondigit
pp-number e sign
pp-number E sign
.
and identifier-nondigit is also a..z A..Z _ among others.
Only in C++17 0x123p-2 is a single preprocessing token, as
pp-number p sign
pp-number P sign
is added.
If you use -pedantic, then you'll get a warning (or with -pedantic-errors
error)
for all uses of hexadecimal floats.
So, either use the GNU extension modes (-std=gnu++11, -std=gnu++14), or wait
for -std=c++17.