http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54249
--- Comment #5 from Paolo Carlini <paolo.carlini at oracle dot com> 2012-08-14 10:38:45 UTC --- It's true however, that, as I mentioned already somewhere, in general our implementation doesn't have control over the underlying *.h headers. Thus, it seems mildly inconsistent to add things only to the *few* *.h headers over which we do have control. And, indeed, apparently the Standard is in some sort of half way state, because LWG already morally acknowledged that libstdc++-v3 is not special about this with the resolution of LWG 456, which allows the c* headers to define entities both in the global namespace and in std:: exactly because (right? Why otherwise?) it's now allowed for a c* to just include whatever *.h it finds on the system.