------- Comment #1 from pinskia at gcc dot gnu dot org 2007-03-19 09:26 ------- It seems like this can be made into valid code and still ICE. The valid code is: template<class T1> struct S1 { template<bool T2> struct S2; template<template<bool> class T3> struct S3 { template<typename T4=S3<S2> > struct S4 {}; struct S5 : S4<> { }; }; };
----- Note if I change how S5 is declared using a specific template argument instead of <>, the crash goes away in that the follow compiles just fine: template<class T1> struct S1 { template<bool T2> struct S2; template<template<bool> class T3> struct S3 { template<typename T4=S3<S2> > struct S4 {}; struct S5 : S4<S3<S2> > { }; }; }; -- pinskia at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Keywords| |ice-on-invalid-code, ice-on- | |valid-code Last reconfirmed|0000-00-00 00:00:00 |2007-03-19 09:26:55 date| | Summary|ICE: segmentation fault on |[4.1/4.2/4.3 Regression] |invalid code |ICE: segmentation fault with | |template code Target Milestone|--- |4.1.3 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31260