[libcxx-commits] [libcxx] [libc++] Implement P2988R12: `std::optional<T&>` (PR #155202)

A. Jiang via libcxx-commits libcxx-commits at lists.llvm.org
Sun Oct 26 02:37:18 PDT 2025


================
@@ -64,6 +64,24 @@ int main(int, char**)
         }
         assert(X::dtor_called == true);
     }
+#if TEST_STD_VER >= 26
+    {
+      typedef X& T;
+      static_assert(std::is_trivially_destructible<T>::value);
+      static_assert(std::is_trivially_destructible<optional<T>>::value);
+    }
+    X::dtor_called = false;
+    X x;
+    {
+      optional<X&> opt{x};
+      assert(X::dtor_called == false);
+    }
+    assert(X::dtor_called == false);
 
-  return 0;
+    {
+      static_assert(std::is_trivially_destructible<X (&)()>::value);
+      static_assert(std::is_trivially_destructible<optional<X (&)()>>::value);
----------------
frederick-vs-ja wrote:

```suggestion
      static_assert(std::is_trivially_destructible_v<X (&)()>);
      static_assert(std::is_trivially_destructible_v<optional<X (&)()>>);
```

https://github.com/llvm/llvm-project/pull/155202


More information about the libcxx-commits mailing list