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