Loading clang/test/CXX/over/over.match/over.match.funcs/over.match.oper/p3-2a.cpp +0 −62 Original line number Diff line number Diff line Loading @@ -324,57 +324,6 @@ bool x = X() == X(); // expected-warning {{ambiguous}} } } // namespace P2468R2 namespace GH53954{ namespace friend_template_1 { struct P { template <class T> friend bool operator==(const P&, const T&); // expected-note {{candidate}} \ // expected-note {{ambiguous candidate function with reversed arguments}} }; struct A : public P {}; struct B : public P {}; bool check(A a, B b) { return a == b; } // expected-warning {{use of overloaded operator '==' (with operand types 'A' and 'B') to be ambiguous}} } namespace friend_template_2 { struct P { template <class T> friend bool operator==(const T&, const P&); // expected-note {{candidate}} \ // expected-note {{ambiguous candidate function with reversed arguments}} }; struct A : public P {}; struct B : public P {}; bool check(A a, B b) { return a == b; } // expected-warning {{use of overloaded operator '==' (with operand types 'A' and 'B') to be ambiguous}} } namespace member_template { struct P { template<class S> bool operator==(const S &) const; // expected-note {{candidate}} \ // expected-note {{ambiguous candidate function with reversed arguments}} }; struct A : public P {}; struct B : public P {}; bool check(A a, B b) { return a == b; } // expected-warning {{use of overloaded operator '==' (with operand types 'A' and 'B') to be ambiguous}} } namespace non_member_template_1 { struct P {}; template<class S> bool operator==(const P&, const S &); // expected-note {{candidate}} \ // expected-note {{ambiguous candidate function with reversed arguments}} struct A : public P {}; struct B : public P {}; bool check(A a, B b) { return a == b; } // expected-warning {{use of overloaded operator '==' (with operand types 'A' and 'B') to be ambiguous}} template<class S> bool operator!=(const P&, const S &); bool fine(A a, B b) { return a == b; } // Ok. Found a matching operator!=. } } namespace ADL_GH68901{ namespace test1 { namespace A { Loading Loading @@ -477,17 +426,6 @@ bool i(X x) { } // namespace test2 } // namespace function_scope_operator_eqeq namespace non_member_template_2 { struct P {}; template<class S> bool operator==(const S&, const P&); // expected-note {{candidate}} \ // expected-note {{ambiguous candidate function with reversed arguments}} struct A : public P {}; struct B : public P {}; bool check(A a, B b) { return a == b; } // expected-warning {{use of overloaded operator '==' (with operand types 'A' and 'B') to be ambiguous}} } #else // NO_ERRORS namespace problem_cases { Loading Loading
clang/test/CXX/over/over.match/over.match.funcs/over.match.oper/p3-2a.cpp +0 −62 Original line number Diff line number Diff line Loading @@ -324,57 +324,6 @@ bool x = X() == X(); // expected-warning {{ambiguous}} } } // namespace P2468R2 namespace GH53954{ namespace friend_template_1 { struct P { template <class T> friend bool operator==(const P&, const T&); // expected-note {{candidate}} \ // expected-note {{ambiguous candidate function with reversed arguments}} }; struct A : public P {}; struct B : public P {}; bool check(A a, B b) { return a == b; } // expected-warning {{use of overloaded operator '==' (with operand types 'A' and 'B') to be ambiguous}} } namespace friend_template_2 { struct P { template <class T> friend bool operator==(const T&, const P&); // expected-note {{candidate}} \ // expected-note {{ambiguous candidate function with reversed arguments}} }; struct A : public P {}; struct B : public P {}; bool check(A a, B b) { return a == b; } // expected-warning {{use of overloaded operator '==' (with operand types 'A' and 'B') to be ambiguous}} } namespace member_template { struct P { template<class S> bool operator==(const S &) const; // expected-note {{candidate}} \ // expected-note {{ambiguous candidate function with reversed arguments}} }; struct A : public P {}; struct B : public P {}; bool check(A a, B b) { return a == b; } // expected-warning {{use of overloaded operator '==' (with operand types 'A' and 'B') to be ambiguous}} } namespace non_member_template_1 { struct P {}; template<class S> bool operator==(const P&, const S &); // expected-note {{candidate}} \ // expected-note {{ambiguous candidate function with reversed arguments}} struct A : public P {}; struct B : public P {}; bool check(A a, B b) { return a == b; } // expected-warning {{use of overloaded operator '==' (with operand types 'A' and 'B') to be ambiguous}} template<class S> bool operator!=(const P&, const S &); bool fine(A a, B b) { return a == b; } // Ok. Found a matching operator!=. } } namespace ADL_GH68901{ namespace test1 { namespace A { Loading Loading @@ -477,17 +426,6 @@ bool i(X x) { } // namespace test2 } // namespace function_scope_operator_eqeq namespace non_member_template_2 { struct P {}; template<class S> bool operator==(const S&, const P&); // expected-note {{candidate}} \ // expected-note {{ambiguous candidate function with reversed arguments}} struct A : public P {}; struct B : public P {}; bool check(A a, B b) { return a == b; } // expected-warning {{use of overloaded operator '==' (with operand types 'A' and 'B') to be ambiguous}} } #else // NO_ERRORS namespace problem_cases { Loading