Fix LWG Issue 2141: common_type trait produces reference types

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@192142 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Marshall Clow
2013-10-07 23:43:33 +00:00
parent 16f13a0b84
commit dab89a1412
4 changed files with 45 additions and 29 deletions

View File

@@ -18,10 +18,24 @@ int main()
static_assert((std::is_same<std::common_type<int>::type, int>::value), "");
static_assert((std::is_same<std::common_type<char>::type, char>::value), "");
#if _LIBCPP_STD_VER > 11
static_assert((std::is_same<std::common_type_t<int>, int>::value), "");
static_assert((std::is_same<std::common_type_t<int>, int>::value), "");
static_assert((std::is_same<std::common_type_t<char>, char>::value), "");
#endif
static_assert((std::is_same<std::common_type< int>::type, int>::value), "");
static_assert((std::is_same<std::common_type<const int>::type, int>::value), "");
static_assert((std::is_same<std::common_type< volatile int>::type, int>::value), "");
static_assert((std::is_same<std::common_type<const volatile int>::type, int>::value), "");
static_assert((std::is_same<std::common_type<int, int>::type, int>::value), "");
static_assert((std::is_same<std::common_type<int, const int>::type, int>::value), "");
static_assert((std::is_same<std::common_type<long, const int>::type, long>::value), "");
static_assert((std::is_same<std::common_type<const long, int>::type, long>::value), "");
static_assert((std::is_same<std::common_type<long, volatile int>::type, long>::value), "");
static_assert((std::is_same<std::common_type<volatile long, int>::type, long>::value), "");
static_assert((std::is_same<std::common_type<const long, const int>::type, long>::value), "");
static_assert((std::is_same<std::common_type<double, char>::type, double>::value), "");
static_assert((std::is_same<std::common_type<short, char>::type, int>::value), "");
#if _LIBCPP_STD_VER > 11

View File

@@ -19,8 +19,8 @@ void test_is_trivially_copyable()
{
static_assert( std::is_trivially_copyable<T>::value, "");
static_assert( std::is_trivially_copyable<const T>::value, "");
static_assert( std::is_trivially_copyable<volatile T>::value, "");
static_assert( std::is_trivially_copyable<const volatile T>::value, "");
static_assert(!std::is_trivially_copyable<volatile T>::value, "");
static_assert(!std::is_trivially_copyable<const volatile T>::value, "");
}
template <class T>