1// { dg-do assemble  }
2// Ambiguous conversion, three candidates:
3// builtin == (int, int), and the two user-defined operators
4// Each one requires a user-defined ICS where another uses builtin conversions,
5// so none is the best viable function.
6
7class MyInt
8{
9public:
10        MyInt(int = 0) {}
11        operator int() const {return 2;}
12};
13
14bool operator==(const MyInt& a, const int& b)   // { dg-message "operator==" } candidate
15{
16        return (int)a == b;
17}
18
19bool operator==(const MyInt& a, const MyInt& b) // { dg-message "operator==" } candidate
20{
21        return (int)a == (int)b;
22}
23
24bool f()
25{
26  return 3 == MyInt();                          // { dg-error "ambiguous" "err" }
27  // { dg-message "operator==" "match candidate text" { target *-*-* } 26 }
28}
29