diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2009-10-30 13:12:08 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2009-10-30 13:12:08 +0000 |
commit | 297f34d71988b2599ac2a68332c47eba0c7345dc (patch) | |
tree | fc57e9f22e2bb3fe2f716585bc3f8e5899c3af26 | |
parent | 2ea9fa8a9bb64ef759de6302376e6efba03aa3fe (diff) | |
download | gcc-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
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" } |