http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51749
--- Comment #23 from Jakub Jelinek <jakub at gcc dot gnu.org> --- So, perhaps this is solveable only through cooperation with glibc folks. I guess a start for that would be to do an audit of the libstdc++ headers, what symbols does it need from the glibc headers, and categorize them (symbols that are defined in the C headers unconditionally, not guarded by any feature test macros, symbols guarded by feature test macros that C++ wants to have visible in the *.h headers (candidates for _ISOCXX98_SOURCE, _ISOCXX11_SOURCE, _ISOCXX14_SOURCE feature test macros?), symbols we don't want to be visible in the C headers but libstdc++ headers use privately for the implementation (export as __ prefixed alternatives?). If glibc is changed, the question would be what should be the new G++ feature test macro defaults, for -std=gnu++{98,11,1y} I guess it should include the POSIX etc. stuff by default too, for -std=c++{98,11,1y} perhaps it should be strict and require users to use feature test macros explicitly.