Question/problem related to _Bool in type_traits.h

Stephen M. Webb
Tue Oct 16 05:41:00 GMT 2001

On Mon, 15 Oct 2001, Ira Ruben wrote:
> Sometime in the past, specifically according to gcc/ChangeLog.2 
> (8/29/99), Zack Weinberg added a #define for '_Bool' to stdbool.h to 
> define it as the type 'bool'.  This means that now with gcc 3.x you 
> can no longer include both stdbool.h and libstdc++'s type_traits.h in 
> the same compilation because type_traits.h defines a _Bool template. 
> It didn't in 2.95.x days which is why this wasn't a problem until now 
> with gcc 3.x.
> Does anyone have a suggested (permanent) fix for this problem.  For 
> the time being I've added a #undef _Bool just before the template 
> definition in type_traits.h.

The problem is that the names in type_traits.h are in the global namespace.
I gather they weren't put into std:: because they aren't standard, but perhaps
they should be put into __gnu_cxx:: just like the concept checks.  After all,
namespaces were introduced to avoid just this sort of conflict.

I looked into doing this a few months ago but got sidetracked (new job, new
baby).  I'll see if I can dig up the changes, bring them up-to-date, and post

Stephen m. Webb

More information about the Libstdc++ mailing list