http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56395
--- Comment #7 from Markus Trippelsdorf <markus at trippelsdorf dot de> 2013-02-20 12:40:01 UTC --- Still more reduced: template<typename T>struct I { typedef T type; }; struct H { typedef int ChildOnCIter; }; template<bool>struct C; template<>struct C<false> { template<typename Sequence>struct G { typedef typename Sequence::tag type; }; }; template<typename Sequence>struct O : C<0>::G<Sequence> {}; template<typename>struct W; template<typename Sequence>struct P : W <typename O <Sequence>::type>::template X<Sequence> {}; template<>struct W<int> { template<typename Vector>struct X : I<Vector> {}; }; template<typename Base>struct R : Base {}; template<typename = int>struct V; template<>struct V<> { typedef int tag; }; struct S : R<V<> > {}; template<typename>struct IterTraits { template<typename OtherNodeT>struct K { typedef OtherNodeT Type; }; }; template<typename PrevItemT, typename NodeVecT, int>struct B { typedef typename PrevItemT::IterT PrevIterT; typedef typename P<NodeVecT>::type _NodeT; typedef typename IterTraits<PrevIterT>::template K< _NodeT>::Type IterT; IterTraits<IterT>ITraits; }; template<typename PrevItemT, typename NodeVecT>struct B<PrevItemT, NodeVecT,0> { typedef typename PrevItemT::IterT PrevIterT; typedef typename P<NodeVecT>::type _NodeT; typedef typename IterTraits<PrevIterT>::template K< _NodeT>::Type IterT; IterTraits<IterT> ITraits; }; template<typename RootChildOnIterT>struct N { typedef RootChildOnIterT RootIterT; struct M { typedef RootIterT IterT; }; B<M, S, 0>mIterList; }; template<typename T>struct D { N<typename T::ChildOnCIter>LeafCIter; }; D<H> a;