https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78514
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- clang++ rejects it (version 3.6.1): > clang++ -S t.C -std=c++11 t.C:21:39: error: extraneous template parameter list in alias template declaration template <typename> template <a... i> using n = g<unsigned long, i...>; ~~~~~~~~~~~~~~~~~ ^ t.C:23:34: error: template argument for template type parameter must be a type template <a i> void increasing(n<i>) { ^ t.C:21:11: note: template parameter is declared here template <typename> template <a... i> using n = g<unsigned long, i...>; ^ t.C:24:16: error: implicit instantiation of undefined template 'g<unsigned long, 1>' increasing(o<10>{}); ^ t.C:5:36: note: template is declared here template <typename f, f...> struct g; ^ 3 errors generated.