http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54653
Jason Merrill <jason at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|ice-on-valid-code |ice-on-invalid-code Priority|P2 |P3 Status|NEW |ASSIGNED AssignedTo|unassigned at gcc dot |jason at gcc dot gnu.org |gnu.org | --- Comment #4 from Jason Merrill <jason at gcc dot gnu.org> 2012-12-05 17:46:21 UTC --- This code is actually ill-formed; the specialization template <typename R, template <class T> class D> struct E <R (), D>::G <R (*) (), D> { }; only has one template-header, and should have two. Furthermore, this is a full specialization of a member of a partial specialization, which is not allowed. 14.8/16: "the declaration shall not explicitly specialize a class member template if its enclosing class templates are not explicitly specialized as well."