1 // RUN: %clang_cc1 -fsyntax-only -verify %s
5 operator int &(); // expected-note {{candidate function}}
8 operator int &(); // expected-note {{candidate function}}
11 struct B
: public BASE
, BASE1
{};
16 void func(const int ci
, const char cc
);
17 void func(const char ci
, const B b
); // expected-note {{candidate function}}
18 void func(const B b
, const int ci
); // expected-note {{candidate function}}
22 func(b1
, f()); // expected-error {{call to 'func' is ambiguous}}
23 return f(); // expected-error {{conversion from 'B' to 'const int' is ambiguous}}
26 // This used to crash when comparing the two operands.
27 void func2(const char cc
); // expected-note {{candidate function}}
28 void func2(const int ci
); // expected-note {{candidate function}}
30 func2(b1
); // expected-error {{call to 'func2' is ambiguous}}
48 void f1(A
); // expected-note {{candidate function}}
49 void f1(C
); // expected-note {{candidate function}}
54 f1(b
); // expected-error {{call to 'f1' is ambiguous}}
55 // ambiguous because b -> C via constructor and
56 // b -> A via constructor or conversion function.
60 namespace rdar8876150
{
61 struct A
{ operator bool(); };
66 bool f(D d
) { return !d
; } // expected-error{{ambiguous conversion from derived class 'D' to base class 'rdar8876150::A':}}
69 namespace assignment
{
70 struct A
{ operator short(); operator bool(); }; // expected-note 2{{candidate}}
71 void f(int n
, A a
) { n
= a
; } // expected-error{{ambiguous}}