//===----------------------------------------------------------------------===// // // Part of libcu++, the C++ Standard Library for your entire system, // under the Apache License v2.0 with LLVM Exceptions. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. // //===----------------------------------------------------------------------===// // Make sure cuda::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: gcc-6 #include #include #include "test_macros.h" template __host__ __device__ void check_aggregate() { static_assert(cuda::std::is_aggregate>::value, ""); static_assert(cuda::std::is_aggregate>::value, ""); static_assert(cuda::std::is_aggregate>::value, ""); static_assert(cuda::std::is_aggregate>::value, ""); static_assert(cuda::std::is_aggregate>::value, ""); } struct Empty {}; struct Trivial { int i; int j; }; struct NonTrivial { int i; int j; __host__ __device__ NonTrivial(NonTrivial const&) {} }; int main(int, char**) { check_aggregate(); check_aggregate(); check_aggregate(); check_aggregate(); check_aggregate(); #if _CCCL_HAS_LONG_DOUBLE() check_aggregate(); #endif // _CCCL_HAS_LONG_DOUBLE() check_aggregate(); check_aggregate(); check_aggregate(); return 0; }