https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78774
Martin Sebor <msebor at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |msebor at gcc dot gnu.org Known to fail| |6.2.1, 7.0 --- Comment #5 from Martin Sebor <msebor at gcc dot gnu.org> --- The ICE can be avoided by using a struct instead of a template alias: template <int> struct ops { template <int> struct A; template <int *Ptr> struct explode { typedef typename A<*Ptr>::join type; }; }; template <typename Ts> typename ops<'\0'>::explode<Ts::join>::type a;