// Verify phase 1 lookup works properly for rewritten non-dependent conditional // operator expressions. // This test currently fails due to build_min_non_dep_op_overload not knowing // how to handle rewritten operator expressions; see the FIXME in build_new_op. // { dg-do compile { target c++20 } } #include struct A { bool operator==(int); std::strong_ordering operator<=>(int); }; template void f() { A a; (void)(a != 0, 0 != a); // { dg-bogus "deleted" "" { xfail *-*-* } } (void)(a < 0, 0 < a); // { dg-bogus "deleted" "" { xfail *-*-* } } (void)(a <= 0, 0 <= a); // { dg-bogus "deleted" "" { xfail *-*-* } } (void)(a > 0, 0 > a); // { dg-bogus "deleted" "" { xfail *-*-* } } (void)(a >= 0, 0 >= a); // { dg-bogus "deleted" "" { xfail *-*-* } } } // These later-declared namespace-scope overloads shouldn't be considered // when instantiating f. bool operator!=(A, int) = delete; bool operator<(A, int) = delete; bool operator<=(A, int) = delete; bool operator>(A, int) = delete; bool operator>=(A, int) = delete; template void f();