From 746db75f05fcc9c30da8333539a97a2cdd9ffff9 Mon Sep 17 00:00:00 2001 From: Nikolas Klauser Date: Fri, 20 Dec 2024 14:02:46 +0100 Subject: [PATCH] [libc++] Add a test to make sure the type traits derive from integral_constant --- ...ed_from_integral_constant.compile.pass.cpp | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 libcxx/test/std/utilities/meta/derived_from_integral_constant.compile.pass.cpp 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