type_traits (make_signed): Remove specializations for floating point types.
2007-05-08 Benjamin Kosnik <bkoz@redhat.com> * include/std/type_traits (make_signed): Remove specializations for floating point types. (make_unsigned): Same. * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Fix. * testsuite/20_util/make_signed/requirements/typedefs-1.cc: Same. * testsuite/20_util/make_signed/requirements/typedefs-2.cc: Same. * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same. * testsuite/20_util/make_unsigned/requirements/typedefs-1.cc: Same. * testsuite/20_util/make_unsigned/requirements/typedefs-2.cc: Same. From-SVN: r124543
This commit is contained in:
parent
1f9e4ca180
commit
fb8ffd109a
@ -1,3 +1,15 @@
|
||||
2007-05-08 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
* include/std/type_traits (make_signed): Remove specializations
|
||||
for floating point types.
|
||||
(make_unsigned): Same.
|
||||
* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Fix.
|
||||
* testsuite/20_util/make_signed/requirements/typedefs-1.cc: Same.
|
||||
* testsuite/20_util/make_signed/requirements/typedefs-2.cc: Same.
|
||||
* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same.
|
||||
* testsuite/20_util/make_unsigned/requirements/typedefs-1.cc: Same.
|
||||
* testsuite/20_util/make_unsigned/requirements/typedefs-2.cc: Same.
|
||||
|
||||
2007-05-08 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
* testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc: New.
|
||||
|
@ -185,21 +185,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
typedef typename __cv_unsigned::__type __type;
|
||||
};
|
||||
|
||||
template<typename _Tp>
|
||||
struct __make_unsigned_selector<_Tp, false, true, false>
|
||||
{
|
||||
private:
|
||||
// GNU floating point types start with sizeof int.
|
||||
static const bool __b1 = sizeof(_Tp) <= sizeof(unsigned int);
|
||||
static const bool __b2 = sizeof(_Tp) <= sizeof(unsigned long);
|
||||
typedef conditional<__b2, unsigned long, unsigned long long> __cond;
|
||||
typedef typename __cond::type __cond_type;
|
||||
typedef unsigned int __ui_type;
|
||||
|
||||
public:
|
||||
typedef typename conditional<__b1, __ui_type, __cond_type>::type __type;
|
||||
};
|
||||
|
||||
template<typename _Tp>
|
||||
struct __make_unsigned_selector<_Tp, false, false, true>
|
||||
{
|
||||
@ -260,7 +245,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
{ typedef signed long long __type; };
|
||||
|
||||
|
||||
// Select between arithmetic and enum: not possible to be both.
|
||||
// Select between integral and enum: not possible to be both.
|
||||
template<typename _Tp,
|
||||
bool _IsInt = is_integral<_Tp>::value,
|
||||
bool _IsSigned = is_signed<_Tp>::value,
|
||||
@ -283,20 +268,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
typedef typename __cv_signed::__type __type;
|
||||
};
|
||||
|
||||
template<typename _Tp>
|
||||
struct __make_signed_selector<_Tp, false, true, false>
|
||||
{
|
||||
// GNU floating point types start with sizeof int.
|
||||
static const bool __b1 = sizeof(_Tp) <= sizeof(signed int);
|
||||
static const bool __b2 = sizeof(_Tp) <= sizeof(signed long);
|
||||
typedef conditional<__b2, signed long, signed long long> __cond;
|
||||
typedef typename __cond::type __cond_type;
|
||||
typedef unsigned int __i_type;
|
||||
|
||||
public:
|
||||
typedef typename conditional<__b1, __i_type, __cond_type>::type __type;
|
||||
};
|
||||
|
||||
template<typename _Tp>
|
||||
struct __make_signed_selector<_Tp, false, false, true>
|
||||
{
|
||||
|
@ -50,13 +50,6 @@ void test01()
|
||||
typedef make_signed<volatile wchar_t>::type test23_type;
|
||||
VERIFY( (is_same<test23_type, volatile signed wchar_t>::value) );
|
||||
|
||||
#if 0
|
||||
// XXX
|
||||
// When is_signed works for floating points types this should pass
|
||||
typedef make_signed<volatile float>::type test24_type;
|
||||
VERIFY( (is_same<test24_type, volatile int>::value) );
|
||||
#endif
|
||||
|
||||
typedef make_signed<test_enum>::type test25_type;
|
||||
VERIFY( (is_same<test25_type, int>::value) );
|
||||
}
|
||||
|
@ -50,13 +50,6 @@ void test01()
|
||||
typedef make_signed<volatile wchar_t>::type test23_type;
|
||||
VERIFY( (is_same<test23_type, volatile signed wchar_t>::value) );
|
||||
|
||||
#if 0
|
||||
// XXX
|
||||
// When is_signed works for floating points types this should pass
|
||||
typedef make_signed<volatile float>::type test24_type;
|
||||
VERIFY( (is_same<test24_type, volatile int>::value) );
|
||||
#endif
|
||||
|
||||
typedef make_signed<test_enum>::type test25_type;
|
||||
VERIFY( (is_same<test25_type, short>::value) );
|
||||
}
|
||||
|
@ -39,15 +39,18 @@ void test01()
|
||||
|
||||
typedef void (fn_type) ();
|
||||
typedef make_signed<fn_type>::type test4_type;
|
||||
|
||||
typedef make_signed<float>::type test5_type;
|
||||
}
|
||||
|
||||
// { dg-error "does not name a type" "" { target *-*-* } 34 }
|
||||
// { dg-error "instantiated from here" "" { target *-*-* } 36 }
|
||||
// { dg-error "instantiated from here" "" { target *-*-* } 38 }
|
||||
// { dg-error "instantiated from here" "" { target *-*-* } 41 }
|
||||
// { dg-error "instantiated from here" "" { target *-*-* } 43 }
|
||||
|
||||
// { dg-error "invalid use of incomplete type" "" { target *-*-* } 320 }
|
||||
// { dg-error "declaration of" "" { target *-*-* } 268 }
|
||||
// { dg-error "invalid use of incomplete type" "" { target *-*-* } 291 }
|
||||
// { dg-error "declaration of" "" { target *-*-* } 253 }
|
||||
|
||||
// { dg-excess-errors "At global scope" }
|
||||
// { dg-excess-errors "In instantiation of" }
|
||||
|
@ -50,13 +50,6 @@ void test01()
|
||||
typedef make_unsigned<volatile wchar_t>::type test23_type;
|
||||
VERIFY( (is_same<test23_type, volatile unsigned wchar_t>::value) );
|
||||
|
||||
#if 0
|
||||
// XXX
|
||||
// When is_unsigned works for floating points types this should pass
|
||||
typedef make_unsigned<volatile float>::type test24_type;
|
||||
VERIFY( (is_same<test24_type, volatile unsigned int>::value) );
|
||||
#endif
|
||||
|
||||
typedef make_unsigned<test_enum>::type test25_type;
|
||||
VERIFY( (is_same<test25_type, unsigned int>::value) );
|
||||
}
|
||||
|
@ -50,13 +50,6 @@ void test01()
|
||||
typedef make_unsigned<volatile wchar_t>::type test23_type;
|
||||
VERIFY( (is_same<test23_type, volatile unsigned wchar_t>::value) );
|
||||
|
||||
#if 0
|
||||
// XXX
|
||||
// When is_unsigned works for floating points types this should pass
|
||||
typedef make_unsigned<volatile float>::type test24_type;
|
||||
VERIFY( (is_same<test24_type, volatile unsigned int>::value) );
|
||||
#endif
|
||||
|
||||
typedef make_unsigned<test_enum>::type test25_type;
|
||||
VERIFY( (is_same<test25_type, unsigned short>::value) );
|
||||
}
|
||||
|
@ -39,14 +39,17 @@ void test01()
|
||||
|
||||
typedef void (fn_type) ();
|
||||
typedef make_unsigned<fn_type>::type test4_type;
|
||||
|
||||
typedef make_unsigned<float>::type test5_type;
|
||||
}
|
||||
|
||||
// { dg-error "does not name a type" "" { target *-*-* } 34 }
|
||||
// { dg-error "instantiated from here" "" { target *-*-* } 36 }
|
||||
// { dg-error "instantiated from here" "" { target *-*-* } 38 }
|
||||
// { dg-error "instantiated from here" "" { target *-*-* } 41 }
|
||||
// { dg-error "instantiated from here" "" { target *-*-* } 43 }
|
||||
|
||||
// { dg-error "invalid use of incomplete type" "" { target *-*-* } 223 }
|
||||
// { dg-error "invalid use of incomplete type" "" { target *-*-* } 208 }
|
||||
// { dg-error "declaration of" "" { target *-*-* } 170 }
|
||||
|
||||
// { dg-excess-errors "At global scope" }
|
||||
|
Loading…
Reference in New Issue
Block a user