Commit fe4e4e3b by Paolo Carlini Committed by Paolo Carlini

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
parent a4a8bca9
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> 2012-10-09 Daniel Krugler <daniel.kruegler@googlemail.com>
* include/std/type_traits (common_time): Provide "SFINAE-friendly" * include/std/type_traits (common_time): Provide "SFINAE-friendly"
......
...@@ -1792,9 +1792,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -1792,9 +1792,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
struct __do_common_type_impl struct __do_common_type_impl
{ {
template<typename _Tp, typename _Up> template<typename _Tp, typename _Up>
static __success_type<typename decay< static __success_type<decltype
decltype(true ? std::declval<_Tp>() : std::declval<_Up>()) (true ? std::declval<_Tp>()
>::type> _S_test(int); : std::declval<_Up>())> _S_test(int);
template<typename, typename> template<typename, typename>
static __failure_type _S_test(...); static __failure_type _S_test(...);
......
...@@ -172,7 +172,7 @@ static_assert(is_type<std::common_type<int, int, int>, int>(), ""); ...@@ -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>(), "");
static_assert(is_type<std::common_type<int, 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<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>, static_assert(is_type<std::common_type<std::initializer_list<int>,
std::initializer_list<int>>, std::initializer_list<int>>(), ""); std::initializer_list<int>>, std::initializer_list<int>>(), "");
static_assert(is_type<std::common_type<B, D>, B>(), ""); 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*>, ...@@ -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<void, void>, void>(), "");
static_assert(is_type<std::common_type<const void, const 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<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&, 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<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 B::*, int D::*>, int D::*>(), "");
static_assert(is_type<std::common_type<int D::*, int B::*>, 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>, ...@@ -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[3], int[3]>, int*>(), "");
static_assert(is_type<std::common_type<int[1], const int[3]>, static_assert(is_type<std::common_type<int[1], const int[3]>,
const int*>(), ""); 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(&&)()>, static_assert(is_type<std::common_type<void(&)(), void(&&)()>,
void(*)()>(), ""); void(&)()>(), "");
static_assert(is_type<std::common_type<void(&&)(), void(&)()>, static_assert(is_type<std::common_type<void(&&)(), void(&)()>,
void(*)()>(), ""); void(&)()>(), "");
static_assert(is_type<std::common_type<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>, int>, int>(), "");
static_assert(is_type<std::common_type<ImplicitTo<int>, ImplicitTo<int>>, static_assert(is_type<std::common_type<ImplicitTo<int>, ImplicitTo<int>>,
ImplicitTo<int>>(), ""); ImplicitTo<int>>(), "");
...@@ -222,7 +222,7 @@ static_assert(is_type<std::common_type<ExplicitTo<int>, ExplicitTo<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)>, 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(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)&>, static_assert(is_type<std::common_type<decltype(lmd1)&, decltype(lmd2)&>,
void(*)(int, double)>(), ""); void(*)(int, double)>(), "");
static_assert(is_type<std::common_type<decltype(nullptr), void*>, void*>(), ""); 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>, ...@@ -237,9 +237,9 @@ static_assert(is_type<std::common_type<decltype(nullptr), int (B::*)() const>,
int (B::*)() const>(), ""); int (B::*)() const>(), "");
static_assert(is_type<std::common_type<decltype(nullptr), const int B::*>, static_assert(is_type<std::common_type<decltype(nullptr), const int B::*>,
const int B::*>(), ""); const int B::*>(), "");
static_assert(is_type<std::common_type<Abstract&, Abstract&>, Abstract>(), ""); 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<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<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*&>, static_assert(is_type<std::common_type<UConv1, const Abstract*&>,
const Abstract*>(), ""); const Abstract*>(), "");
...@@ -328,7 +328,7 @@ void test(int i) ...@@ -328,7 +328,7 @@ void test(int i)
static_assert(is_type<std::common_type<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(is_type<std::common_type<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), static_assert(!has_type<std::common_type<decltype(local_lmd1),
decltype(lmd1)>>(), ""); decltype(lmd1)>>(), "");
......
...@@ -105,7 +105,7 @@ void test02() ...@@ -105,7 +105,7 @@ void test02()
COMMON_TYPE_TEST_ALL_2(int, int, int, 1); COMMON_TYPE_TEST_ALL_2(int, int, int, 1);
COMMON_TYPE_TEST_ALL_2(int, double, double, 2); COMMON_TYPE_TEST_ALL_2(int, double, double, 2);
COMMON_TYPE_TEST_2(NO_CV, A, A, A, 3); 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); COMMON_TYPE_TEST_2(NO_CV, B, A, A, 5);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment