I also don't think the ... syntax is ideal due to ambiguities with operators and non-generic variadics, but it's worth mentioning it's not just C++ that uses .... I've also seen this syntax in ML dialects with row polymorphism, and even more obscurely, Factor used it for row polymorphic stack effects.
I think pack T or many T or something could work as a declaration for the pack type parameter in a generic parameter list. Not sure how I feel about #expand(T) for a pack expansion type or expression, though.