24 { return __is_class(T); }
32 { return !!__is_class(T); }
39 static const bool trait = __is_class(T);
43 const bool My2<T>::trait;
45 template<typename T, bool b = __is_class(T)>
47 { static const bool trait = b; };
49 template<typename T, bool b>
50 const bool My3_help<T, b>::trait;
58 { return My3_help<T>::trait; }
61 #define PTEST(T) (__is_class(T) && f<T>() \
62 && My<T>().f() && My2<T>::trait && My3<T>().f())
64 #define NTEST(T) (!__is_class(T) && !f<T>() \
65 && !My<T>().f() && !My2<T>::trait && !My3<T>().f())
70 assert (NTEST (void));