g++ sometimes doesn't find its standard headers

LLeweLLyn Reese llewelly@lifesupport.shutdown.com
Thu Mar 13 14:36:00 GMT 2003


Markus Gerwinski <markus@gerwinski.de> writes:

> Andres Chavarria wrote:
> > using namespace std;
> > vector<int> vec;
> > 
> > or
> > 
> > #include <vector>
> > std::vector<int> vec;
> 
> Well, <vector>, <string> etc. are running fine with that, but my problem was
> with <ext/hash_map>. As I meanwhile found out, the hash_map class is not inside
> the std namespace, but inside some cryptic namespace "__gnu_cxx". If I use that
> one, it works fine, but "__gnu_cxx" doesn't really seem to be a namespace for
> public use. ;-)
> 
> Does someone know if I really should use this one? Or is there maybe some
> #define deep inside gcc3.2 transferring this cryptic namespace into something
> else, that's intended for use by the app developer?

The name __gnu_cxx is intended to inform the app developer (you) that
    a gnu extension is in use. It begins with __ because names
    begining with __ are reserved to the implementation; conforming
    user code can be assumed not to use __gnu_cxx, except to
    deliberate use the extensions. See:

gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.1/namespace____gnu__cxx.html#_details

The maintainers are aware that the situation is confusing. :-)



More information about the Gcc-help mailing list