diff --git a/libcxx/test/std/utilities/meta/derived_from_integral_constant.compile.pass.cpp b/libcxx/test/std/utilities/meta/derived_from_integral_constant.compile.pass.cpp new file mode 100644 index 0000000000000..3db7a214b27bd --- /dev/null +++ b/libcxx/test/std/utilities/meta/derived_from_integral_constant.compile.pass.cpp @@ -0,0 +1,116 @@ +//===----------------------------------------------------------------------===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++03 + +// Check that type traits derive from integral_constant + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS + +#include +#include + +#include "test_macros.h" + +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of, std::alignment_of>::value, ""); +static_assert(std::is_base_of, std::rank>::value, ""); +static_assert(std::is_base_of, std::extent>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +#if TEST_STD_VER <= 17 +static_assert(std::is_base_of>::value, ""); +#endif +#if TEST_STD_VER >= 14 +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +#endif +#if TEST_STD_VER >= 17 +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +#endif +#if TEST_STD_VER >= 20 +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +static_assert(std::is_base_of>::value, ""); +#endif +#if TEST_STD_VER >= 23 +# if defined(__cpp_lib_is_implicit_lifetime) && __cpp_lib_is_implicit_lifetime >= 202302L +static_assert(std::is_base_of>::value, ""); +# endif +static_assert(std::is_base_of>::value, ""); +#endif +#if TEST_STD_VER >= 26 +# if defined(__cpp_lib_is_virtual_base_of) && __cpp_lib_is_virtual_base_of >= 202406L +static_assert(std::is_base_of>::value, ""); +# endif +#endif