// RUN: %clang_cc1 -fsyntax-only -verify %s struct A0 { struct K { }; }; template struct B0: A0 { static void f() { K k; } }; namespace E1 { typedef double A; template class B { typedef int A; }; template struct X : B { A* blarg(double *dp) { return dp; } }; } namespace E2 { struct A { struct B; int *a; int Y; }; int a; template struct Y : T { struct B { /* ... */ }; B b; void f(int i) { a = i; } Y* p; }; Y ya; }