diff --git a/libcxx/include/type_traits b/libcxx/include/type_traits --- a/libcxx/include/type_traits +++ b/libcxx/include/type_traits @@ -758,7 +758,9 @@ // is_array -#if __has_keyword(__is_array) +// TODO: Clang incorrectly reports that __is_array is true for T[0]. +// Re-enable the branch once https://llvm.org/PR54705 is fixed. +#if __has_keyword(__is_array) && 0 template struct _LIBCPP_TEMPLATE_VIS is_array : _BoolConstant<__is_array(_Tp)> { }; diff --git a/libcxx/test/std/utilities/meta/meta.unary/meta.unary.cat/is_array.pass.cpp b/libcxx/test/std/utilities/meta/meta.unary/meta.unary.cat/is_array.pass.cpp --- a/libcxx/test/std/utilities/meta/meta.unary/meta.unary.cat/is_array.pass.cpp +++ b/libcxx/test/std/utilities/meta/meta.unary/meta.unary.cat/is_array.pass.cpp @@ -73,6 +73,7 @@ int main(int, char**) { test_is_array(); + test_is_not_array(); test_is_array(); test_is_array(); diff --git a/libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/is_bounded_array.pass.cpp b/libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/is_bounded_array.pass.cpp --- a/libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/is_bounded_array.pass.cpp +++ b/libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/is_bounded_array.pass.cpp @@ -32,9 +32,6 @@ test_array_imp(); } -typedef char array[3]; -typedef char incomplete_array[]; - class incomplete_type; class Empty {}; @@ -65,8 +62,9 @@ test_array(); // Array types - test_array(); - test_array(); + test_array(); + test_array(); + test_array(); test_array(); return 0; diff --git a/libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/is_unbounded_array.pass.cpp b/libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/is_unbounded_array.pass.cpp --- a/libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/is_unbounded_array.pass.cpp +++ b/libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/is_unbounded_array.pass.cpp @@ -32,9 +32,6 @@ test_array_imp(); } -typedef char array[3]; -typedef char incomplete_array[]; - class incomplete_type; class Empty {}; @@ -65,8 +62,9 @@ test_array(); // Array types - test_array(); - test_array(); + test_array(); + test_array(); + test_array(); test_array(); return 0;