This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/56395] [4.7/4.8 Regression] ICE, Segmentation fault in tsubst
- From: "markus at trippelsdorf dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 20 Feb 2013 12:40:01 +0000
- Subject: [Bug c++/56395] [4.7/4.8 Regression] ICE, Segmentation fault in tsubst
- Auto-submitted: auto-generated
- References: <bug-56395-4@http.gcc.gnu.org/bugzilla/>
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;