1 // RUN: %clang_cc1 -fsyntax-only -verify %s
3 // FIXME: Access control checks
11 struct D1
: public Base
{};
12 struct D2
: public Base
{};
14 struct Derived
: public D1
, public D2
{
24 void Derived::Inner() {
28 this->D1::Member
= 42;
34 void Foo(); // expected-note{{found by ambiguous name lookup}}
38 template<typename T
> struct Derived1T
: BaseT
<T
> { };
39 template<typename T
> struct Derived2T
: BaseT
<T
> { };
42 struct DerivedT
: public Derived1T
<T
>, public Derived2T
<T
> {
47 void DerivedT
<T
>::Inner() {
49 Derived2T
<T
>::Member
= 42;
50 this->Derived1T
<T
>::Foo();
51 this->Derived2T
<T
>::Member
= 42;
52 this->Foo(); // expected-error{{non-static member 'Foo' found in multiple base-class subobjects of type 'BaseT<int>'}}
56 void Test(DerivedT
<T
> d
) {
57 d
.template Derived1T
<T
>::Foo();
58 d
.template Derived2T
<T
>::Member
= 17;
59 d
.Inner(); // expected-note{{in instantiation}}
62 template void Test(DerivedT
<int>);