//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // Make sure std::array is an aggregate type. // We can only check this in C++17 and above, because we don't have the // trait before that. // UNSUPPORTED: c++03, c++11, c++14 #include #include template void check_aggregate() { static_assert(std::is_aggregate >::value, ""); static_assert(std::is_aggregate >::value, ""); static_assert(std::is_aggregate >::value, ""); static_assert(std::is_aggregate >::value, ""); static_assert(std::is_aggregate >::value, ""); } struct Empty { }; struct Trivial { int i; int j; }; struct NonTrivial { int i; int j; NonTrivial(NonTrivial const&) { } }; int main(int, char**) { check_aggregate(); check_aggregate(); check_aggregate(); check_aggregate(); check_aggregate(); check_aggregate(); check_aggregate(); check_aggregate(); check_aggregate(); return 0; }