anonymous-union.cpp revision e94eec54f4ccb4c16b908e4b00e3eb5f93b723ef
1e94eec54f4ccb4c16b908e4b00e3eb5f93b723efDouglas Gregor// RUN: %clang_cc1 -fsyntax-only -verify %s 2e94eec54f4ccb4c16b908e4b00e3eb5f93b723efDouglas Gregor 3e94eec54f4ccb4c16b908e4b00e3eb5f93b723efDouglas Gregor// PR5868 4e94eec54f4ccb4c16b908e4b00e3eb5f93b723efDouglas Gregorstruct T0 { 5e94eec54f4ccb4c16b908e4b00e3eb5f93b723efDouglas Gregor int x; 6e94eec54f4ccb4c16b908e4b00e3eb5f93b723efDouglas Gregor union { 7e94eec54f4ccb4c16b908e4b00e3eb5f93b723efDouglas Gregor void *m0; 8e94eec54f4ccb4c16b908e4b00e3eb5f93b723efDouglas Gregor }; 9e94eec54f4ccb4c16b908e4b00e3eb5f93b723efDouglas Gregor}; 10e94eec54f4ccb4c16b908e4b00e3eb5f93b723efDouglas Gregortemplate <typename T> 11e94eec54f4ccb4c16b908e4b00e3eb5f93b723efDouglas Gregorstruct T1 : public T0, public T { 12e94eec54f4ccb4c16b908e4b00e3eb5f93b723efDouglas Gregor void f0() { 13e94eec54f4ccb4c16b908e4b00e3eb5f93b723efDouglas Gregor m0 = 0; // expected-error{{ambiguous conversion}} 14e94eec54f4ccb4c16b908e4b00e3eb5f93b723efDouglas Gregor } 15e94eec54f4ccb4c16b908e4b00e3eb5f93b723efDouglas Gregor}; 16e94eec54f4ccb4c16b908e4b00e3eb5f93b723efDouglas Gregor 17e94eec54f4ccb4c16b908e4b00e3eb5f93b723efDouglas Gregorstruct A : public T0 { }; 18e94eec54f4ccb4c16b908e4b00e3eb5f93b723efDouglas Gregor 19e94eec54f4ccb4c16b908e4b00e3eb5f93b723efDouglas Gregorvoid f1(T1<A> *S) { S->f0(); } // expected-note{{instantiation of member function}} 20