aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Kosnik <bkoz@redhat.com>2007-05-08 12:10:48 +0000
committerBenjamin Kosnik <bkoz@gcc.gnu.org>2007-05-08 12:10:48 +0000
commitfb8ffd109a098d6682e0687ee083fa1c3b80d0b4 (patch)
treed25b7c3e4197458a7f88e1fbbf52ce478bfabb01
parent1f9e4ca1808800d4afb40f8a46caeba46cd405f7 (diff)
downloadgcc-fb8ffd109a098d6682e0687ee083fa1c3b80d0b4.zip
gcc-fb8ffd109a098d6682e0687ee083fa1c3b80d0b4.tar.gz
gcc-fb8ffd109a098d6682e0687ee083fa1c3b80d0b4.tar.bz2
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
-rw-r--r--libstdc++-v3/ChangeLog12
-rw-r--r--libstdc++-v3/include/std/type_traits31
-rw-r--r--libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-1.cc7
-rw-r--r--libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc7
-rw-r--r--libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc7
-rw-r--r--libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-1.cc7
-rw-r--r--libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc7
-rw-r--r--libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc5
8 files changed, 22 insertions, 61 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index cc9845d..a7f62f9 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,17 @@
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.
2007-05-08 Jason Merrill <jason@redhat.com>
diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index 4019188..6806ebc 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -186,21 +186,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
};
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>
{
private:
@@ -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,
@@ -284,20 +269,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
};
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>
{
private:
diff --git a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-1.cc b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-1.cc
index 826e47e..43fc33a 100644
--- a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-1.cc
+++ b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-1.cc
@@ -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) );
}
diff --git a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
index 3a820ac..4dd9bb6 100644
--- a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
+++ b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
@@ -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) );
}
diff --git a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc
index aa94f2a..063c12eb 100644
--- a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc
@@ -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" }
diff --git a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-1.cc b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-1.cc
index b09d3e9..e204c55 100644
--- a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-1.cc
+++ b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-1.cc
@@ -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) );
}
diff --git a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
index 9e5c64a..5038f81 100644
--- a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
+++ b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
@@ -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) );
}
diff --git a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
index cc07d61..79277a7 100644
--- a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
@@ -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" }