https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86998
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Jonathan Wakely from comment #0) > I don't know why all of GCC, Clang and EDG say something about a > nested-name-specifier or qualified name for the first template-parameter. I > don't think the grammar allows a qualified-id there, only a plain identifier. It is allowed, when naming a non-type template parameter using a qualiflied-id e.g. template<typename T> struct X { template<typename T::U> struct Y { }; }; The rest of the PR still stands, we should add a fix-it for the comma.