http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56395



Markus Trippelsdorf <markus at trippelsdorf dot de> changed:



           What    |Removed                     |Added

----------------------------------------------------------------------------

                 CC|                            |markus at trippelsdorf dot

                   |                            |de



--- Comment #6 from Markus Trippelsdorf <markus at trippelsdorf dot de> 
2013-02-20 12:19:47 UTC ---

A little bit further reduced:



template < typename T > struct I

{

  typedef T type;

};

template < typename T > struct F

{

  typedef T type;

};

template < typename ChildType > struct H

{

  typedef ChildType ChildNodeType;

    template < typename RootNodeT > struct A

  {

    typedef RootNodeT NodeType;

    typedef typename F < NodeType >::type NonConstNodeType;

  };

  typedef A < H > 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 < typename > struct L;

template < typename Sequence,

  typename T > struct Q:L < typename O < Sequence >::type >

                        ::template X < Sequence, T >

{

};

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 HeadT, int > struct J

{

  typedef typename J < typename HeadT::ChildNodeType, 1 >::Type SubtreeT;

  typedef typename Q < SubtreeT, HeadT >::type Type;

};

template < typename HeadT > struct J <HeadT, 0 >

{

  typedef S Type;

};

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;

  typedef typename RootIterT::NonConstNodeType NCRootNodeT;

  typedef typename J < NCRootNodeT, 0 >::Type InvTreeT;

  struct M

  {

    typedef RootIterT IterT;

  };

    B < M, InvTreeT, 0 > mIterList;

};

template < typename T > struct D

{

  N < typename T::ChildOnCIter > LeafCIter;

};

D < H < int > >a;

Reply via email to