// Origin c++/45558 // { dg-do compile } template struct C { template struct B { template struct E { explicit E(const W &x) : w(x) {} const W &w; }; }; }; struct F; template struct D { D() {} }; const D g; template struct A { template struct B : C::template B { typedef typename C::template B V; static const D > > a; }; }; template template const D::template B::template E > > A::B::a = typename C::template B::template E >(g);