https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70529

--- Comment #2 from Axel Naumann <g...@axel-naumann.de> ---
Hi Jakub,

Thanks for your reply!

Let me try to explain better then.

This code

auto a = 0x123p2;
auto b = 0x123p-2;

compiles just fine until the recent hexfloat change. Now, the second line will
trigger an error message that does not mention C++1z or hexfloat support in
general. The first line continues to compile.

This is misleading. In my point of view, the fact that the diagnostic is
justified by the tokenization behavior is not relevant for user-level
diagnostics.

Take an arbitrary user, upgrading from GCC 5.x to 6.0. They will see an error
about a missing exponent - which is simply false (the code proves the
diagnostic wrong) and doesn't tell the developer what needs to be fixed (let
alone why).

You asked for it, so here is my wish list:
- for C++ < 1z, do not support hexfloats, neither with "unsigned" not negative
exponents. Or support both, as a GCC extention that's enabled by default - like
in the GCC 5 times.
- if you remove support for C++ < 1z, state that hexfloats are unsupported in
C++ < 1z.

Cheers, Axel.

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.

Reply via email to