This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Strange C++ function pointer test

On 2 January 2016 at 11:42, Jonathan Wakely wrote:
> On 31 December 2015 at 18:49, James Dennett <> wrote:
>> On Thu, Dec 31, 2015 at 4:42 AM, Jonathan Wakely <>
>> wrote:
>>> On 31 December 2015 at 11:54, Dominik Vogt wrote:
>>> > Is there a requirement for a certain minimum Glibc version for
>>> > this to work?
>>> It doesn't work with any glibc, because it doesn't declare the C++
>>> overloads.
>>> Libstdc++ has an include/c_compatibility/math.h header that would
>>> include <cmath> (which declares the C++ overloads) and then pull them
>>> into the global namespace, but that isn't used on GNU/Linux, and would
>>> create other problems.
>> What other problems?
>> It's something of an assumption of the C++ Standard that it's practical for
>> C++ implementations to provide such wrappers to add overloads for C++.  If
>> that's causing some fundamental problem then we should document it (and
>> ideally address it).
> Not fundamental problems in the standard, just with the implementation
> of that header. It won't work as is and would need changes

Specifically, that header assumes that <cmath> is include/c/cmath, but
for GNU/Linux we use include/c_global/cmath, and IIUC it assumes that
the libc header defines some of the C++ overloads (but not all?),
which isn't true for glibc.

So the combination of include/c/cmath and
include/c_compatibility/math.h wouldn't work. We could change it to
work, but that might break targets using those headers already
(possibly just QNX? I don't know).

If we want to fix it in libstdc++ then I think we need a different
math.h, written from scratch, not starting from

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]