diff options
14 files changed, 21 insertions, 22 deletions
| diff --git a/libcxx/include/type_traits b/libcxx/include/type_traits index c0e1a6df2fe..7eb0c03b5a3 100644 --- a/libcxx/include/type_traits +++ b/libcxx/include/type_traits @@ -2861,7 +2861,7 @@ template <class _Tp> struct _LIBCPP_TYPE_VIS_ONLY is_trivially_move_assignable  #if __has_feature(has_trivial_destructor) || (_GNUC_VER >= 403)  template <class _Tp> struct _LIBCPP_TYPE_VIS_ONLY is_trivially_destructible -    : public integral_constant<bool, __has_trivial_destructor(_Tp)> {}; +    : public integral_constant<bool, is_destructible<_Tp>::value && __has_trivial_destructor(_Tp)> {};  #else diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/has_virtual_destructor.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/has_virtual_destructor.pass.cpp index 92fd336e757..685d30de692 100644 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/has_virtual_destructor.pass.cpp +++ b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/has_virtual_destructor.pass.cpp @@ -69,7 +69,7 @@ int main()      test_has_not_virtual_destructor<int*>();      test_has_not_virtual_destructor<const int*>();      test_has_not_virtual_destructor<char[3]>(); -    test_has_not_virtual_destructor<char[3]>(); +    test_has_not_virtual_destructor<char[]>();      test_has_not_virtual_destructor<bit_zero>();      test_has_virtual_destructor<Abstract>(); diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_abstract.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_abstract.pass.cpp index cba575f16e0..f2a8c23246b 100644 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_abstract.pass.cpp +++ b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_abstract.pass.cpp @@ -61,7 +61,7 @@ int main()      test_is_not_abstract<int*>();      test_is_not_abstract<const int*>();      test_is_not_abstract<char[3]>(); -    test_is_not_abstract<char[3]>(); +    test_is_not_abstract<char[]>();      test_is_not_abstract<Union>();      test_is_not_abstract<Empty>();      test_is_not_abstract<bit_zero>(); diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_const.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_const.pass.cpp index 32857655972..72f2ff45892 100644 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_const.pass.cpp +++ b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_const.pass.cpp @@ -30,7 +30,7 @@ int main()      test_is_const<int*>();      test_is_const<const int*>();      test_is_const<char[3]>(); -    test_is_const<char[3]>(); +    test_is_const<char[]>();      static_assert(!std::is_const<int&>::value, "");      static_assert(!std::is_const<const int&>::value, ""); diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_empty.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_empty.pass.cpp index 584d2cce56a..47af3c45cde 100644 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_empty.pass.cpp +++ b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_empty.pass.cpp @@ -56,7 +56,7 @@ int main()      test_is_not_empty<int*>();      test_is_not_empty<const int*>();      test_is_not_empty<char[3]>(); -    test_is_not_empty<char[3]>(); +    test_is_not_empty<char[]>();      test_is_not_empty<Union>();      test_is_not_empty<NotEmpty>(); diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_move_assignable.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_move_assignable.pass.cpp index 892ffd78f66..a89ee7d4e49 100644 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_move_assignable.pass.cpp +++ b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_move_assignable.pass.cpp @@ -60,7 +60,6 @@ int main()      test_is_not_move_assignable<const int> ();      test_is_not_move_assignable<int[]> ();      test_is_not_move_assignable<int[3]> (); -    test_is_not_move_assignable<int[3]> ();  #endif      test_is_not_move_assignable<void> ();  } diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_destructible.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_destructible.pass.cpp index 78717329af8..8fd5bab5a01 100644 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_destructible.pass.cpp +++ b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_destructible.pass.cpp @@ -23,7 +23,7 @@ void test_is_nothrow_destructible()  }  template <class T> -void test_has_not_nothrow_destructor() +void test_is_not_nothrow_destructible()  {      static_assert(!std::is_nothrow_destructible<T>::value, "");      static_assert(!std::is_nothrow_destructible<const T>::value, ""); @@ -64,9 +64,10 @@ struct A  int main()  { -    test_has_not_nothrow_destructor<void>(); -    test_has_not_nothrow_destructor<AbstractDestructor>(); -    test_has_not_nothrow_destructor<NotEmpty>(); +    test_is_not_nothrow_destructible<void>(); +    test_is_not_nothrow_destructible<AbstractDestructor>(); +    test_is_not_nothrow_destructible<NotEmpty>(); +    test_is_not_nothrow_destructible<char[]>();  #if __has_feature(cxx_noexcept)      test_is_nothrow_destructible<A>(); @@ -83,7 +84,6 @@ int main()      test_is_nothrow_destructible<int*>();      test_is_nothrow_destructible<const int*>();      test_is_nothrow_destructible<char[3]>(); -    test_is_nothrow_destructible<char[3]>();      test_is_nothrow_destructible<Abstract>();  #if __has_feature(cxx_noexcept)      test_is_nothrow_destructible<bit_zero>(); diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_pod.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_pod.pass.cpp index a97685c0a30..4ec1ae9949e 100644 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_pod.pass.cpp +++ b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_pod.pass.cpp @@ -48,5 +48,5 @@ int main()      test_is_pod<int*>();      test_is_pod<const int*>();      test_is_pod<char[3]>(); -    test_is_pod<char[3]>(); +    test_is_pod<char[]>();  } diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_polymorphic.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_polymorphic.pass.cpp index 8f5547ec22f..6e82cddc516 100644 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_polymorphic.pass.cpp +++ b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_polymorphic.pass.cpp @@ -69,7 +69,7 @@ int main()      test_is_not_polymorphic<int*>();      test_is_not_polymorphic<const int*>();      test_is_not_polymorphic<char[3]>(); -    test_is_not_polymorphic<char[3]>(); +    test_is_not_polymorphic<char[]>();      test_is_not_polymorphic<Union>();      test_is_not_polymorphic<Empty>();      test_is_not_polymorphic<bit_zero>(); diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_signed.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_signed.pass.cpp index 7de65665793..479c2529f02 100644 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_signed.pass.cpp +++ b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_signed.pass.cpp @@ -45,7 +45,7 @@ int main()      test_is_not_signed<int*>();      test_is_not_signed<const int*>();      test_is_not_signed<char[3]>(); -    test_is_not_signed<char[3]>(); +    test_is_not_signed<char[]>();      test_is_not_signed<bool>();      test_is_not_signed<unsigned>(); diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivialially_copyable.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp index d65882378fc..d65882378fc 100644 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivialially_copyable.pass.cpp +++ b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_destructible.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_destructible.pass.cpp index 1b34885ef99..b18ace44bda 100644 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_destructible.pass.cpp +++ b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_destructible.pass.cpp @@ -23,7 +23,7 @@ void test_is_trivially_destructible()  }  template <class T> -void test_has_not_trivial_destructor() +void test_is_not_trivially_destructible()  {      static_assert(!std::is_trivially_destructible<T>::value, "");      static_assert(!std::is_trivially_destructible<const T>::value, ""); @@ -64,10 +64,11 @@ struct A  int main()  { -    test_has_not_trivial_destructor<void>(); -    test_has_not_trivial_destructor<A>(); -    test_has_not_trivial_destructor<AbstractDestructor>(); -    test_has_not_trivial_destructor<NotEmpty>(); +    test_is_not_trivially_destructible<void>(); +    test_is_not_trivially_destructible<A>(); +    test_is_not_trivially_destructible<AbstractDestructor>(); +    test_is_not_trivially_destructible<NotEmpty>(); +    test_is_not_trivially_destructible<char[]>();      test_is_trivially_destructible<Abstract>();      test_is_trivially_destructible<int&>(); @@ -78,6 +79,5 @@ int main()      test_is_trivially_destructible<int*>();      test_is_trivially_destructible<const int*>();      test_is_trivially_destructible<char[3]>(); -    test_is_trivially_destructible<char[3]>();      test_is_trivially_destructible<bit_zero>();  } diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_unsigned.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_unsigned.pass.cpp index 2cd494546b8..dfdb1554261 100644 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_unsigned.pass.cpp +++ b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_unsigned.pass.cpp @@ -45,7 +45,7 @@ int main()      test_is_not_unsigned<int*>();      test_is_not_unsigned<const int*>();      test_is_not_unsigned<char[3]>(); -    test_is_not_unsigned<char[3]>(); +    test_is_not_unsigned<char[]>();      test_is_not_unsigned<int>();      test_is_not_unsigned<double>(); diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_volatile.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_volatile.pass.cpp index 8e1fca4d419..f6805bc1c4f 100644 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_volatile.pass.cpp +++ b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_volatile.pass.cpp @@ -30,7 +30,7 @@ int main()      test_is_volatile<int*>();      test_is_volatile<const int*>();      test_is_volatile<char[3]>(); -    test_is_volatile<char[3]>(); +    test_is_volatile<char[]>();      static_assert(!std::is_volatile<int&>::value, "");      static_assert(!std::is_volatile<volatile int&>::value, ""); | 

