gcc rejects the following, clang accepts it: template<size_t,class...> struct S; template<class...A> struct S<sizeof...(A),A...>{}; both gcc and clang reject this: template<int,int> struct S; template<int i> struct S<i,i+1>{}; gcc accepts the following, clang rejects it: template<class,int> struct S; template<class T> struct S<T,T{}>{};
Clang now accepts the second example.
Fixed by 9b94785dedb08b006419bec1a402614d9241317a.