41 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify %s2 3// PR58684struct T0 {5 int x;6 union {7 void *m0;8 };9};10template <typename T>11struct T1 : public T0, public T { //expected-warning{{direct base 'T0' is inaccessible due to ambiguity:\n struct T1<struct A> -> T0\n struct T1<struct A> -> A -> T0}}12 void f0() { 13 m0 = 0; // expected-error{{ambiguous conversion}}14 } 15};16 17struct A : public T0 { };18 19void f1(T1<A> *S) { S->f0(); } // expected-note{{instantiation of member function}} expected-note{{in instantiation of template class 'T1<A>' requested here}}20 21namespace rdar8635664 {22 template<typename T>23 struct X {24 struct inner;25 26 struct inner {27 union {28 int x;29 float y;30 };31 32 typedef T type;33 };34 };35 36 void test() {37 X<int>::inner i;38 i.x = 0;39 }40}41