http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51146
--- Comment #6 from joseph at codesourcery dot com <joseph at codesourcery dot com> 2011-11-15 22:28:38 UTC --- I think this is really a duplicate of an issue discussed in various places before: libstdc++ relies on C library symbols that are not necessarily reserved by the selected version of standard C++, and in particular it relies on them in inline code in headers. This means (a) g++ predefines _GNU_SOURCE, causing headers included by the user to make visible symbols the user didn't want and (b) the use of symbols in the headers conflicts with any symbols of the same name defined by the user. Fixing this would be pretty involved and require close cooperation with libc to provide implementation-namespace versions of every such symbol the library needs, as I said in bug 36231; a lot of work to get this exactly in accordance with the various standards.