(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
overload/
operator6.C
// 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);