diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index da1204de618..0b653805253 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2007-11-18 Paolo Carlini + + * include/tr1/type_traits (_DEFINE_SPEC_BODY): Remove. + (_DEFINE_SPEC_0_HELPER): Rename to _DEFINE_SPEC_HELPER. + (_DEFINE_SPEC): Simplify; adjust uses. + 2007-11-18 Paolo Carlini * include/tr1_impl/type_traits (is_reference, is_function, diff --git a/libstdc++-v3/include/tr1/type_traits b/libstdc++-v3/include/tr1/type_traits index c8376ad02aa..4533ee5dc6c 100644 --- a/libstdc++-v3/include/tr1/type_traits +++ b/libstdc++-v3/include/tr1/type_traits @@ -60,19 +60,16 @@ namespace std { namespace tr1 { -#define _DEFINE_SPEC_BODY(_Value) \ - : public integral_constant { }; +#define _DEFINE_SPEC_HELPER(_Spec) \ + template<> \ + struct _Spec \ + : public true_type { }; -#define _DEFINE_SPEC_0_HELPER(_Spec, _Value) \ - template<> \ - struct _Spec \ - _DEFINE_SPEC_BODY(_Value) - -#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 struct is_reference @@ -125,20 +122,20 @@ namespace tr1 template 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 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 struct __is_base_of_helper @@ -244,9 +241,8 @@ namespace tr1 }; }; -#undef _DEFINE_SPEC_0_HELPER +#undef _DEFINE_SPEC_HELPER #undef _DEFINE_SPEC -#undef _DEFINE_SPEC_BODY } }