diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2012-10-10 12:02:05 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2012-10-10 12:02:05 +0000 |
commit | fe4e4e3bf407d3ec74e8c5934f28bdbc9aae55c4 (patch) | |
tree | 9134719090e14c7fd30586bfccd2cc78ee410b60 | |
parent | a4a8bca9e79a3b1d28c75dca43d904b0cad64fcd (diff) | |
download | gcc-fe4e4e3bf407d3ec74e8c5934f28bdbc9aae55c4.zip gcc-fe4e4e3bf407d3ec74e8c5934f28bdbc9aae55c4.tar.gz gcc-fe4e4e3bf407d3ec74e8c5934f28bdbc9aae55c4.tar.bz2 |
type_traits (__do_common_type_impl): Revert for now LWG 2141-related change.
2012-10-10 Paolo Carlini <paolo.carlini@oracle.com>
* include/std/type_traits (__do_common_type_impl): Revert for now
LWG 2141-related change.
* testsuite/20_util/common_type/requirements/typedefs-1.cc: Likewise.
* testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc:
Adjust.
From-SVN: r192308
4 files changed, 26 insertions, 18 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index fac31ad..d77d97d 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2012-10-10 Paolo Carlini <paolo.carlini@oracle.com> + + * include/std/type_traits (__do_common_type_impl): Revert for now + LWG 2141-related change. + * testsuite/20_util/common_type/requirements/typedefs-1.cc: Likewise. + * testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc: + Adjust. + 2012-10-09 Daniel Krugler <daniel.kruegler@googlemail.com> * include/std/type_traits (common_time): Provide "SFINAE-friendly" diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits index ccec920..510b012 100644 --- a/libstdc++-v3/include/std/type_traits +++ b/libstdc++-v3/include/std/type_traits @@ -1792,9 +1792,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __do_common_type_impl { template<typename _Tp, typename _Up> - static __success_type<typename decay< - decltype(true ? std::declval<_Tp>() : std::declval<_Up>()) - >::type> _S_test(int); + static __success_type<decltype + (true ? std::declval<_Tp>() + : std::declval<_Up>())> _S_test(int); template<typename, typename> static __failure_type _S_test(...); diff --git a/libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc b/libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc index de7ca27..c23521f 100644 --- a/libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc +++ b/libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc @@ -172,7 +172,7 @@ static_assert(is_type<std::common_type<int, int, int>, int>(), ""); static_assert(is_type<std::common_type<int, int, int, int>, int>(), ""); static_assert(is_type<std::common_type<int, int, int, int, int>, int>(), ""); static_assert(is_type<std::common_type<S, S>, S>(), ""); -static_assert(is_type<std::common_type<const S, const S>, S>(), ""); +static_assert(is_type<std::common_type<const S, const S>, const S>(), ""); static_assert(is_type<std::common_type<std::initializer_list<int>, std::initializer_list<int>>, std::initializer_list<int>>(), ""); static_assert(is_type<std::common_type<B, D>, B>(), ""); @@ -188,10 +188,10 @@ static_assert(is_type<std::common_type<void*, const volatile int*>, static_assert(is_type<std::common_type<void, void>, void>(), ""); static_assert(is_type<std::common_type<const void, const void>, void>(), ""); static_assert(is_type<std::common_type<int&, int&&>, int>(), ""); -static_assert(is_type<std::common_type<int&, int&>, int>(), ""); +static_assert(is_type<std::common_type<int&, int&>, int&>(), ""); static_assert(is_type<std::common_type<int&&, int&&>, int>(), ""); -static_assert(is_type<std::common_type<U&, const U&&>, U>(), ""); -static_assert(is_type<std::common_type<U&, U&>, U>(), ""); +static_assert(is_type<std::common_type<U&, const U&&>, const U>(), ""); +static_assert(is_type<std::common_type<U&, U&>, U&>(), ""); static_assert(is_type<std::common_type<U&&, U&&>, U>(), ""); static_assert(is_type<std::common_type<int B::*, int D::*>, int D::*>(), ""); static_assert(is_type<std::common_type<int D::*, int B::*>, int D::*>(), ""); @@ -204,14 +204,14 @@ static_assert(is_type<std::common_type<int (B::*)() const, int (D::*)() const>, static_assert(is_type<std::common_type<int[3], int[3]>, int*>(), ""); static_assert(is_type<std::common_type<int[1], const int[3]>, const int*>(), ""); -static_assert(is_type<std::common_type<void(), void()>, void(*)()>(), ""); -static_assert(is_type<std::common_type<void(&)(), void(&)()>, void(*)()>(), ""); +static_assert(is_type<std::common_type<void(), void()>, void(&)()>(), ""); +static_assert(is_type<std::common_type<void(&)(), void(&)()>, void(&)()>(), ""); static_assert(is_type<std::common_type<void(&)(), void(&&)()>, - void(*)()>(), ""); + void(&)()>(), ""); static_assert(is_type<std::common_type<void(&&)(), void(&)()>, - void(*)()>(), ""); + void(&)()>(), ""); static_assert(is_type<std::common_type<void(&&)(), void(&&)()>, - void(*)()>(), ""); + void(&)()>(), ""); static_assert(is_type<std::common_type<ImplicitTo<int>, int>, int>(), ""); static_assert(is_type<std::common_type<ImplicitTo<int>, ImplicitTo<int>>, ImplicitTo<int>>(), ""); @@ -222,7 +222,7 @@ static_assert(is_type<std::common_type<ExplicitTo<int>, ExplicitTo<int>>, static_assert(is_type<std::common_type<decltype(lmd1), decltype(lmd1)>, decltype(lmd1)>(), ""); static_assert(is_type<std::common_type<decltype(lmd1)&, decltype(lmd1)&>, - decltype(lmd1)>(), ""); + decltype(lmd1)&>(), ""); static_assert(is_type<std::common_type<decltype(lmd1)&, decltype(lmd2)&>, void(*)(int, double)>(), ""); static_assert(is_type<std::common_type<decltype(nullptr), void*>, void*>(), ""); @@ -237,9 +237,9 @@ static_assert(is_type<std::common_type<decltype(nullptr), int (B::*)() const>, int (B::*)() const>(), ""); static_assert(is_type<std::common_type<decltype(nullptr), const int B::*>, const int B::*>(), ""); -static_assert(is_type<std::common_type<Abstract&, Abstract&>, Abstract>(), ""); -static_assert(is_type<std::common_type<Ukn&, Ukn&>, Ukn>(), ""); -static_assert(is_type<std::common_type<ImplicitTo<B&>, B&>, B>(), ""); +static_assert(is_type<std::common_type<Abstract&, Abstract&>, Abstract&>(), ""); +static_assert(is_type<std::common_type<Ukn&, Ukn&>, Ukn&>(), ""); +static_assert(is_type<std::common_type<ImplicitTo<B&>, B&>, B&>(), ""); static_assert(is_type<std::common_type<ImplicitTo<B&>&, B&&>, B>(), ""); static_assert(is_type<std::common_type<UConv1, const Abstract*&>, const Abstract*>(), ""); @@ -328,7 +328,7 @@ void test(int i) static_assert(is_type<std::common_type<decltype(local_lmd1)&, decltype(local_lmd1)>, decltype(local_lmd1)>(), ""); static_assert(is_type<std::common_type<decltype(local_lmd1)&, - decltype(local_lmd1)&>, decltype(local_lmd1)>(), ""); + decltype(local_lmd1)&>, decltype(local_lmd1)&>(), ""); static_assert(!has_type<std::common_type<decltype(local_lmd1), decltype(lmd1)>>(), ""); diff --git a/libstdc++-v3/testsuite/20_util/common_type/requirements/typedefs-1.cc b/libstdc++-v3/testsuite/20_util/common_type/requirements/typedefs-1.cc index 2d6babe..4564b2b 100644 --- a/libstdc++-v3/testsuite/20_util/common_type/requirements/typedefs-1.cc +++ b/libstdc++-v3/testsuite/20_util/common_type/requirements/typedefs-1.cc @@ -105,7 +105,7 @@ void test02() COMMON_TYPE_TEST_ALL_2(int, int, int, 1); COMMON_TYPE_TEST_ALL_2(int, double, double, 2); COMMON_TYPE_TEST_2(NO_CV, A, A, A, 3); - COMMON_TYPE_TEST_2(const, A, A, A, 4); + COMMON_TYPE_TEST_2(const, A, A, const A, 4); COMMON_TYPE_TEST_2(NO_CV, B, A, A, 5); } |