[libcxx-commits] [libcxx] [libcxxabi] [libc++] P3247R2: Deprecate `is_trivial(_v)` (PR #130573)
Nikolas Klauser via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Mar 10 06:49:12 PDT 2025
================
@@ -10,26 +10,34 @@
#include <type_traits>
#include "test_macros.h"
-// XFAIL: c++03, c++11, c++14
+// REQUIRES: std-at-least-c++17
// std::byte is not an integer type, nor a character type.
-// It is a distinct type for accessing the bits that ultimately make up object storage.
+// It is a distinct scoped enumeration type for accessing the bits that ultimately make up object storage.
-#if TEST_STD_VER > 17
-static_assert( std::is_trivial<std::byte>::value, "" ); // P0767
-#else
-static_assert( std::is_pod<std::byte>::value, "" );
+static_assert(std::is_enum_v<std::byte>);
+#if TEST_STD_VER >= 23
+static_assert(std::is_scoped_enum_v<std::byte>);
#endif
-static_assert(!std::is_arithmetic<std::byte>::value, "" );
-static_assert(!std::is_integral<std::byte>::value, "" );
+static_assert(std::is_same_v<std::underlying_type_t<std::byte>, unsigned char>);
+static_assert(!std::is_convertible_v<std::byte, unsigned char>);
+static_assert(sizeof(std::byte) == 1);
-static_assert(!std::is_same<std::byte, char>::value, "" );
-static_assert(!std::is_same<std::byte, signed char>::value, "" );
-static_assert(!std::is_same<std::byte, unsigned char>::value, "" );
+static_assert(std::is_trivially_copyable_v<std::byte>);
+static_assert(std::is_trivially_default_constructible_v<std::byte>);
+#if TEST_STD_VER < 26 // P3247R2
+static_assert(std::is_trivial_v<std::byte>);
+#endif
+#if TEST_STD_VER < 20 // P0767R1
+static_assert(std::is_pod_v<std::byte>);
+#endif
+static_assert(std::is_standard_layout_v<std::byte>);
+
+static_assert(!std::is_arithmetic_v<std::byte>);
+static_assert(!std::is_integral_v<std::byte>);
-// The standard doesn't outright say this, but it's pretty clear that it has to be true.
-static_assert(sizeof(std::byte) == 1, "" );
+static_assert(!std::is_same_v<std::byte, char>);
+static_assert(!std::is_same_v<std::byte, signed char>);
+static_assert(!std::is_same_v<std::byte, unsigned char>);
-int main(int, char**) {
- return 0;
-}
+int main(int, char**) { return 0; }
----------------
philnik777 wrote:
Also, this should be a `.compile.pass.cpp`.
https://github.com/llvm/llvm-project/pull/130573
More information about the libcxx-commits
mailing list