https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84796
--- Comment #9 from Patrick Palka <ppalka at gcc dot gnu.org> --- I suppose one way to make this work is to eagerly expand pack expansions in member template parameter lists when instantiating a class template. Consequently we'd now reject the below testcase due to conflicting overloads of A<int>::f (as we already do if Ts is a non-pack parameter), which seems desirable? template<class... Ts> struct A { template<int> void f(); template<Ts...> void f(); }; template struct A<int>;