[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