[libcxx-commits] [libcxx] [llvm] [libc++] Implement P3379R0 Constrain `std::expected` equality operators (PR #135759)

A. Jiang via libcxx-commits libcxx-commits at lists.llvm.org
Thu Apr 24 20:28:33 PDT 2025


================
@@ -17,18 +17,17 @@
 #include <utility>
 
 #include "test_macros.h"
+#include "../../types.h"
 
-struct Data {
-  int i;
-  constexpr Data(int ii) : i(ii) {}
-
-  friend constexpr bool operator==(const Data& data, int ii) { return data.i == ii; }
-};
+// https://wg21.link/P3379R0
+static_assert(CanCompare<std::expected<EqualityComparable, EqualityComparable>, std::unexpected<int>>);
+static_assert(CanCompare<std::expected<EqualityComparable, int>, std::unexpected<EqualityComparable>>);
+static_assert(!CanCompare<std::expected<EqualityComparable, NonComparable>, std::unexpected<int>>);
----------------
frederick-vs-ja wrote:

These lines seem confused. First, they're not testing comparisons involving `expected<void, E>`. Second, they should be guarded with `TEST_STD_VER >= 26`.

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


More information about the libcxx-commits mailing list