Index: test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp =================================================================== --- test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp +++ test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp @@ -17,18 +17,26 @@ #include #include "test_macros.h" +#ifndef IMPLEMENTS_CWG_2094 + #if (defined(__clang_major__) && __clang_major__ >= 5) || (defined(_MSC_VER) && _MSC_VER >= 1911) + #define IMPLEMENTS_CWG_2094 true + #else /* ^^^ Clang 5.0 or later, MSVC++ 19.11 or later ^^^ // vvv Others vvv */ + #define IMPLEMENTS_CWG_2094 false + #endif /* defined(_MSC_VER) && _MSC_VER >= 1911 */ +#endif + template void test_is_trivially_copyable() { - static_assert( std::is_trivially_copyable::value, ""); - static_assert( std::is_trivially_copyable::value, ""); - static_assert(!std::is_trivially_copyable::value, ""); - static_assert(!std::is_trivially_copyable::value, ""); + static_assert(std::is_trivially_copyable::value, ""); + static_assert(std::is_trivially_copyable::value, ""); + static_assert(std::is_trivially_copyable::value == IMPLEMENTS_CWG_2094, ""); + static_assert(std::is_trivially_copyable::value == IMPLEMENTS_CWG_2094, ""); #if TEST_STD_VER > 14 - static_assert( std::is_trivially_copyable_v, ""); - static_assert( std::is_trivially_copyable_v, ""); - static_assert(!std::is_trivially_copyable_v, ""); - static_assert(!std::is_trivially_copyable_v, ""); + static_assert(std::is_trivially_copyable_v, ""); + static_assert(std::is_trivially_copyable_v, ""); + static_assert(std::is_trivially_copyable_v == IMPLEMENTS_CWG_2094, ""); + static_assert(std::is_trivially_copyable_v == IMPLEMENTS_CWG_2094, ""); #endif }