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