https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65221
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #2) > Even doing this: > template< typename A > > struct X > { > using this_type = X<A>; > // typedef X<A> this_type; > static this_type inst; > }; > > template< typename A > > typename X<A>::thistype X<A>::inst; There is a typo here, it should have been this_type and that one always worked. Also the original test in comment #0 seems to work in GCC 7+.