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

--- Comment #9 from Jonathan Wakely <redi at gcc dot gnu.org> ---
There are various ways to hit this issue, some of which mean it can be
considered a regression, because the same code compiled with older releases
(before we added the C++11 definitions of isinf/isnan) or with -std=gnu++98
(and since the default changed to -std=gnu++14 that means code that worked with
the default options now doesn't compile).

(In reply to Marc Glisse from comment #6)
> * glibc could change the return type of isnan to bool in C++ (there would be
> a regression in that ::isnan wouldn't be constexpr and inline until g++ is
> taught the right prototype)

I think glibc should just not declare those functions in C++ (as Joseph said in
Bug 54130 comment 14 they are from Unix98 and not part of C99 anyway, because
C99 requires generic macros).

> * libstdc++ could import ::isnan in std::, assuming isnan exists. Maybe that
> requires a configure test. Maybe that test would be rather fragile (depends
> on feature macros). Maybe that's where this stops being a good idea :-(

I'm going to take this approach for now, and try to get glibc to change for the
future.

Reply via email to