{
namespace tr1
{
-#define _DEFINE_SPEC_BODY(_Value) \
- : public integral_constant<bool, _Value> { };
-
-#define _DEFINE_SPEC_0_HELPER(_Spec, _Value) \
- template<> \
- struct _Spec \
- _DEFINE_SPEC_BODY(_Value)
+#define _DEFINE_SPEC_HELPER(_Spec) \
+ template<> \
+ struct _Spec \
+ : public true_type { };
-#define _DEFINE_SPEC(_Order, _Trait, _Type, _Value) \
- _DEFINE_SPEC_##_Order##_HELPER(_Trait<_Type>, _Value) \
- _DEFINE_SPEC_##_Order##_HELPER(_Trait<_Type const>, _Value) \
- _DEFINE_SPEC_##_Order##_HELPER(_Trait<_Type volatile>, _Value) \
- _DEFINE_SPEC_##_Order##_HELPER(_Trait<_Type const volatile>, _Value)
+#define _DEFINE_SPEC(_Trait, _Type) \
+ _DEFINE_SPEC_HELPER(_Trait<_Type>) \
+ _DEFINE_SPEC_HELPER(_Trait<_Type const>) \
+ _DEFINE_SPEC_HELPER(_Trait<_Type volatile>) \
+ _DEFINE_SPEC_HELPER(_Trait<_Type const volatile>)
template<typename>
struct is_reference
template<typename>
struct is_signed
: public false_type { };
- _DEFINE_SPEC(0, is_signed, signed char, true)
- _DEFINE_SPEC(0, is_signed, short, true)
- _DEFINE_SPEC(0, is_signed, int, true)
- _DEFINE_SPEC(0, is_signed, long, true)
- _DEFINE_SPEC(0, is_signed, long long, true)
+ _DEFINE_SPEC(is_signed, signed char)
+ _DEFINE_SPEC(is_signed, short)
+ _DEFINE_SPEC(is_signed, int)
+ _DEFINE_SPEC(is_signed, long)
+ _DEFINE_SPEC(is_signed, long long)
template<typename>
struct is_unsigned
: public false_type { };
- _DEFINE_SPEC(0, is_unsigned, unsigned char, true)
- _DEFINE_SPEC(0, is_unsigned, unsigned short, true)
- _DEFINE_SPEC(0, is_unsigned, unsigned int, true)
- _DEFINE_SPEC(0, is_unsigned, unsigned long, true)
- _DEFINE_SPEC(0, is_unsigned, unsigned long long, true)
+ _DEFINE_SPEC(is_unsigned, unsigned char)
+ _DEFINE_SPEC(is_unsigned, unsigned short)
+ _DEFINE_SPEC(is_unsigned, unsigned int)
+ _DEFINE_SPEC(is_unsigned, unsigned long)
+ _DEFINE_SPEC(is_unsigned, unsigned long long)
template<typename _Base, typename _Derived>
struct __is_base_of_helper
};
};
-#undef _DEFINE_SPEC_0_HELPER
+#undef _DEFINE_SPEC_HELPER
#undef _DEFINE_SPEC
-#undef _DEFINE_SPEC_BODY
}
}