aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2009-10-30 13:12:08 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2009-10-30 13:12:08 +0000
commit297f34d71988b2599ac2a68332c47eba0c7345dc (patch)
treefc57e9f22e2bb3fe2f716585bc3f8e5899c3af26
parent2ea9fa8a9bb64ef759de6302376e6efba03aa3fe (diff)
downloadgcc-297f34d71988b2599ac2a68332c47eba0c7345dc.zip
gcc-297f34d71988b2599ac2a68332c47eba0c7345dc.tar.gz
gcc-297f34d71988b2599ac2a68332c47eba0c7345dc.tar.bz2
type_traits (__is_convertible_simple): Remove.
2009-10-30 Paolo Carlini <paolo.carlini@oracle.com> * include/std/type_traits (__is_convertible_simple): Remove. (__is_convertible_helper): Adjust. * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust dg-error line numbers. * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Likewise. From-SVN: r153743
-rw-r--r--libstdc++-v3/ChangeLog9
-rw-r--r--libstdc++-v3/include/std/type_traits28
-rw-r--r--libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc4
-rw-r--r--libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc4
4 files changed, 23 insertions, 22 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index a59710d..05e2c33 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,12 @@
+2009-10-30 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/type_traits (__is_convertible_simple): Remove.
+ (__is_convertible_helper): Adjust.
+ * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
+ dg-error line numbers.
+ * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+ Likewise.
+
2009-10-30 Jerry Quinn <jlquinn@optonline.net>
* libsupc++/tinfo.cc (operator=(const type_info&)): Revert 153734.
diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index f5666bc..2824638 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -240,34 +240,26 @@ namespace std
{ };
// Relationships between types.
+ template<typename _From, typename _To,
+ bool = (is_void<_From>::value || is_void<_To>::value
+ || is_function<_To>::value || is_array<_To>::value)>
+ struct __is_convertible_helper
+ { static const bool __value = (is_void<_From>::value
+ && is_void<_To>::value); };
+
template<typename _From, typename _To>
- struct __is_convertible_simple
+ struct __is_convertible_helper<_From, _To, false>
: public __sfinae_types
{
private:
static __one __test(_To);
static __two __test(...);
- static _From __makeFrom();
-
+ static typename add_rvalue_reference<_From>::type __makeFrom();
+
public:
static const bool __value = sizeof(__test(__makeFrom())) == 1;
};
- template<typename _From, typename _To,
- bool = (is_void<_From>::value || is_void<_To>::value
- || is_function<_To>::value || is_array<_To>::value)>
- struct __is_convertible_helper
- {
- static const bool __value = (__is_convertible_simple<typename
- add_rvalue_reference<_From>::type,
- _To>::__value);
- };
-
- template<typename _From, typename _To>
- struct __is_convertible_helper<_From, _To, true>
- { static const bool __value = (is_void<_From>::value
- && is_void<_To>::value); };
-
// XXX FIXME
// The C++0x specifications require front-end support, see N2255.
/// is_convertible
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 5b129e8..9319a48 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
@@ -48,8 +48,8 @@ void test01()
// { dg-error "instantiated from here" "" { target *-*-* } 40 }
// { dg-error "instantiated from here" "" { target *-*-* } 42 }
-// { dg-error "invalid use of incomplete type" "" { target *-*-* } 554 }
-// { dg-error "declaration of" "" { target *-*-* } 516 }
+// { dg-error "invalid use of incomplete type" "" { target *-*-* } 546 }
+// { dg-error "declaration of" "" { target *-*-* } 508 }
// { dg-excess-errors "At global scope" }
// { dg-excess-errors "In instantiation of" }
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 fc58ffe..7497767 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
@@ -48,8 +48,8 @@ void test01()
// { dg-error "instantiated from here" "" { target *-*-* } 40 }
// { dg-error "instantiated from here" "" { target *-*-* } 42 }
-// { dg-error "invalid use of incomplete type" "" { target *-*-* } 475 }
-// { dg-error "declaration of" "" { target *-*-* } 437 }
+// { dg-error "invalid use of incomplete type" "" { target *-*-* } 467 }
+// { dg-error "declaration of" "" { target *-*-* } 429 }
// { dg-excess-errors "At global scope" }
// { dg-excess-errors "In instantiation of" }