struct BASE {};
struct A : public BASE {
typedef BASE base;
};
struct B : public A {
typedef A base ;
};
template<typename E> struct L : public L< typename E::base >
{
};
template<> struct L<BASE> {};
int main(){
A* a=0; B* b=0;
a=b;
L<A>* pA=0;
L<B>* pB=0;
pA=pB;
}