1 // RUN: clang-cc -fsyntax-only -verify %s
3 class B
: public A
{ };
4 class C
: public A
{ };
5 class D
: public B
, public C
{ };
9 a
= d
; // expected-error{{ambiguous conversion from derived class 'class D' to base class 'class A'}} expected-error{{incompatible type assigning 'class D *', expected 'class A *'}}
13 class A2
: public Object2
{ };
14 class B2
: public virtual A2
{ };
15 class C2
: virtual public A2
{ };
16 class D2
: public B2
, public C2
{ };
17 class E2
: public D2
, public C2
, public virtual A2
{ };
18 class F2
: public E2
, public A2
{ };
20 void g(E2
* e2
, F2
* f2
) {
23 o2
= f2
; // expected-error{{ambiguous conversion from derived class 'class F2' to base class 'class Object2'}} expected-error{{incompatible type assigning 'class F2 *', expected 'class Object2 *'}}
26 // Test that ambiguous/inaccessibility checking does not trigger too
27 // early, because it should not apply during overload resolution.
28 void overload_okay(Object2
*);
29 void overload_okay(E2
*);
31 void overload_call(F2
* f2
) {