Viewing file: operator-8.C (1.07 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// 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>();
|