// DR 2673 - User-declared spaceship vs. built-in operators // { dg-do compile { target c++20 } } #include enum class E : int { E1, E2 }; enum class F : int { F1, F2 }; constexpr auto operator<=> (E lhs, E rhs) { return (int) rhs <=> (int) lhs; } constexpr bool operator== (F lhs, F rhs) { return (int) lhs != (int) rhs; } static_assert ((E::E1 <=> E::E2) == (1 <=> 0)); static_assert (E::E1 > E::E2); // { dg-bogus "static assertion failed" "" { xfail *-*-* } } static_assert (F::F1 == F::F2); static_assert (!(F::F1 != F::F2)); // { dg-bogus "static assertion failed" "" { xfail *-*-* } }