// { dg-do assemble  }
// Ambiguous conversion, three candidates:
// builtin == (int, int), and the two user-defined operators
// Each one requires a user-defined ICS where another uses builtin conversions,
// so none is the best viable function.

class MyInt
{
public:
        MyInt(int = 0) {}
        operator int() const {return 2;}
};

bool operator==(const MyInt& a, const int& b) // { dg-message "operator==" "" { target c++17_down } }
{
        return (int)a == b;
}

bool operator==(const MyInt& a, const MyInt& b) // { dg-message "operator==" "" { target c++17_down } }
{
        return (int)a == (int)b;
}

bool f()
{
  return 3 == MyInt();	// { dg-error "ambiguous" "err" { target c++17_down } }
}
