blob: 64d8a97cdd005e81cda1a8754719adf01eb96871 [file] [log] [blame]
// 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 <compare>
struct A {
bool operator==(int);
std::strong_ordering operator<=>(int);
};
template<class T>
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<int>.
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<int>();