diff --git a/test/std/utilities/meta/meta.unary/meta.unary.prop/is_literal_type.pass.cpp b/test/std/utilities/meta/meta.unary/meta.unary.prop/is_literal_type.pass.cpp index 174521d0..3b55c059 100644 --- a/test/std/utilities/meta/meta.unary/meta.unary.prop/is_literal_type.pass.cpp +++ b/test/std/utilities/meta/meta.unary/meta.unary.prop/is_literal_type.pass.cpp @@ -12,17 +12,20 @@ // is_literal_type #include +#include "test_macros.h" template void test_is_literal_type() { static_assert( std::is_literal_type::value, ""); + static_assert( std::is_literal_type::value, ""); + static_assert( std::is_literal_type::value, ""); + static_assert( std::is_literal_type::value, ""); #if TEST_STD_VER > 14 static_assert( std::is_literal_type_v, ""); -// static_assert( std::is_final_v, ""); -// static_assert( std::is_final_v, ""); -// static_assert( std::is_final_v, ""); -// static_assert( std::is_final_v, ""); + static_assert( std::is_literal_type_v, ""); + static_assert( std::is_literal_type_v, ""); + static_assert( std::is_literal_type_v, ""); #endif } @@ -30,31 +33,72 @@ template void test_is_not_literal_type() { static_assert(!std::is_literal_type::value, ""); + static_assert(!std::is_literal_type::value, ""); + static_assert(!std::is_literal_type::value, ""); + static_assert(!std::is_literal_type::value, ""); #if TEST_STD_VER > 14 - static_assert( std::is_literal_type_v, ""); -// static_assert( std::is_final_v, ""); -// static_assert( std::is_final_v, ""); -// static_assert( std::is_final_v, ""); -// static_assert( std::is_final_v, ""); + static_assert(!std::is_literal_type_v, ""); + static_assert(!std::is_literal_type_v, ""); + static_assert(!std::is_literal_type_v, ""); + static_assert(!std::is_literal_type_v, ""); #endif } -struct A +class Empty { }; -struct B +class NotEmpty { - B(); + virtual ~NotEmpty(); }; +union Union {}; + +struct bit_zero +{ + int : 0; +}; + +class Abstract +{ + virtual ~Abstract() = 0; +}; + +enum Enum {zero, one}; + +typedef void (*FunctionPtr)(); + int main() { - test_is_literal_type (); - test_is_literal_type (); - test_is_literal_type (); - test_is_literal_type (); - test_is_literal_type (); +#if TEST_STD_VER >= 11 + test_is_literal_type(); +#endif - test_is_not_literal_type (); +// Before C++14, void was not a literal type +// In C++14, cv-void is is a literal type +#if TEST_STD_VER < 14 + test_is_not_literal_type(); +#else TEST_STD_VER > 14 + test_is_literal_type(); +#endif + + test_is_literal_type(); + test_is_literal_type(); + test_is_literal_type(); + test_is_literal_type(); +#if TEST_STD_VER >= 11 + test_is_literal_type(); +#endif + test_is_literal_type(); + test_is_literal_type(); + test_is_literal_type(); + test_is_literal_type(); + test_is_literal_type(); + test_is_literal_type(); + test_is_literal_type(); + test_is_literal_type(); + + test_is_not_literal_type(); + test_is_not_literal_type(); }