================
@@ -1149,9 +1171,11 @@ struct Proxy {
   // Calling swap(Proxy<T>{}, Proxy<T>{}) would fail (pass prvalues)
 
   // Compare operators are defined for the convenience of the tests
-  friend constexpr bool operator==(const Proxy&, const Proxy&)
-    requires (std::equality_comparable<T> && !std::is_reference_v<T>)
-  = default;
+  friend constexpr bool operator==(const Proxy& lhs, const Proxy& rhs)
+    requires(std::equality_comparable<T> && !std::is_reference_v<T>)
+  {
+    return lhs.data == rhs.data;
+  };
----------------
jamesETsmith wrote:

Thanks to an offline discussion with @Quuxplusone, I now know that these 
operators only started causing problems when I introduced the base class 
`ProxyDiffTBase` because the base subobject wasn't trivially comparable. Since 
the `operator==` for `Proxy` is used all over, when they stopped functioning 
properly a lot of tests started failing which is what prompted me to make those 
changes to begin with. At @Quuxplusone's suggestion, I've specified the 
comparison operators for the base class (and derived `Proxy` class) as default, 
undoing the changes we were talking about here and below.

https://github.com/llvm/llvm-project/pull/68494
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to