| // PR c++/17805 |
| |
| // Per 13.3.1.2/3 bullet 2, an operator function is not a candidate |
| // for overload resolution if neither argument is of class type and |
| // neither enumerator-typed argument gets an exact match, with or |
| // without reference binding, for the corresponding parameter. |
| |
| struct A |
| { |
| A(int); |
| A(const char*); |
| }; |
| |
| bool operator==(const A&, const A&); |
| const A& operator*(const A&); |
| |
| enum E { e }; |
| |
| bool b1 = (e == ""); // { dg-error "no match" } |
| |
| bool b2 = (A(1) == ""); |
| |
| bool b3 = (e == A(1)); |
| |
| const A& a1 = *e; // { dg-error "no match" } |
| |
| const A& a2 = *A(1); |