1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
// Reduced from the testcase for c++/29433 template <class T> struct A: T { void f(typename T::type); using T::f; void g() { f(1); } }; template <class T> struct B: T { typedef int type; }; struct C { typedef double type; void f(); }; int main() { A<B<A<C> > > a; a.g(); }