===================================================================
@@ -172,7 +172,7 @@
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, 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[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<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 @@
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 @@
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)>>(), "");
===================================================================
@@ -105,7 +105,7 @@
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);
}
===================================================================
@@ -1792,9 +1792,9 @@
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(...);