http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57691

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
I think this is due to a horrible hack in the front end which adds implicit
extern "C" blocks around system headers, and a side-effect is that function
prototypes of the form 'T f()' are treated as 'T f(...)' as in C, not 'T
f(void)' as C++ requires.

See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50982#c40 for another case
where this bit us.

This is a terrible terrible hack IMHO, and should be disabled in libstdc++
headers, because when we write void(*)() we damn well mean it, we don't mean
something different.  Having to use void(*)(void) is an abomination.

Reply via email to