[Bug c++/56395] [4.7/4.8 Regression] ICE, Segmentation fault in tsubst
markus at trippelsdorf dot de
gcc-bugzilla@gcc.gnu.org
Wed Feb 20 12:20:00 GMT 2013
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;
More information about the Gcc-bugs
mailing list