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

A. Jiang via libcxx-commits libcxx-commits at lists.llvm.org
Thu Oct 23 06:10:37 PDT 2025


================
@@ -25,9 +27,14 @@ int main(int, char**)
 {
     using std::optional;
     {
-        // expected-error-re at optional:* 2 {{static assertion failed{{.*}}instantiation of optional with a reference type is ill-formed}}
-        optional<int&> opt1;
-        optional<int&&> opt2;
+#if TEST_STD_VER >= 26
+      // expected-error-re at optional:* {{static assertion failed{{.*}}instantiation of optional with an rvalue reference type is ill-formed}}
+      optional<int&&> opt2;
+#else
+      // expected-error-re at optional:* 2 {{static assertion failed{{.*}}instantiation of optional with a reference type is ill-formed}}
+      optional<int&> opt1;
+      optional<int&&> opt2;
+#endif
----------------
frederick-vs-ja wrote:

Can we do this?
```suggestion
#if TEST_STD_VER >= 26
      // expected-error-re at optional:* {{static assertion failed{{.*}}instantiation of optional with an rvalue reference type is ill-formed}}
#else
      // expected-error-re at optional:* 2 {{static assertion failed{{.*}}instantiation of optional with a reference type is ill-formed}}
#endif
      optional<int&> opt1;
      optional<int&&> opt2;
```

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


More information about the libcxx-commits mailing list