[libcxx-commits] [libcxx] [libc++] Implement P3836R2: Make `optional<T&>` trivially copyable (PR #171528)
A. Jiang via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Dec 23 01:45:02 PST 2025
================
@@ -62,6 +64,19 @@ struct SpecialMemberTest {
"trivially move constructible, "
"trivially move assignable, and"
"trivially destructible.");
+#if TEST_STD_VER >= 26
+ static_assert(std::is_trivially_copyable_v<std::optional<T&>>);
+ static_assert(std::is_trivially_copy_constructible_v<std::optional<T&>>);
+ static_assert(std::is_trivially_move_constructible_v<std::optional<T&>>);
+ static_assert(std::is_trivially_constructible_v<std::optional<T&>, std::optional<T&>&>);
+ static_assert(std::is_trivially_constructible_v<std::optional<T&>, const std::optional<T&>&&>);
+ static_assert(std::is_trivially_copy_assignable_v<std::optional<T&>>);
+ static_assert(std::is_trivially_move_assignable_v<std::optional<T&>>);
+ static_assert(std::is_trivially_assignable_v<std::optional<T&>&, std::optional<T&>&>);
+ static_assert(std::is_trivially_assignable_v<std::optional<T&>&, const std::optional<T&>&&>);
+ static_assert(std::is_trivially_destructible_v<std::optional<T&>>);
+
----------------
frederick-vs-ja wrote:
The empty line here looks weird to me. Also, perhaps it's better to add an empty line before `#if TEST_STD_VER >= 26`.
https://github.com/llvm/llvm-project/pull/171528
More information about the libcxx-commits
mailing list