In: http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/include/std/type_traits?revision=169421&view=markup on line 625, there's: : public integral_constant<bool, __is_trivial(_Tp)> Since _Tp is a type, not a value, I thought __is_trivial must be a macro; however, grepping the include directory produced nothing: find . -type f -exec grep __is_trivial {} \; -ls : public integral_constant<bool, __is_trivial(_Tp)> 2966263 20 -rw-r--r-- 1 evansl evansl 17946 Aug 25 02:31 ./type_traits Where is __is_trivial defined so I can look at it to try and understand why g++ doesn't complain, when compiling type_traits, that _Tp is a type and not a value? TIA. -regards, Larry