http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56468
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> 2013-02-27 09:33:27 UTC --- It's because of the implicit declaration of std::type_info, G++ correctly diagnoses similar cases with altered namespace names or type names, it only happens for std::type_info. I see no harm in adding an explicit declaration to the libstdc++ header so it works with clang and other compilers that don't declare std::type_info automatically.