Consider: It seems clear that the third call is ill-formed because by
the time we get to the second function parameter pack we've
already assumed that T is empty, so deducing anything
for T would be nonsensical. But I don't think this is
expressed anywhere in the standard. One way to handle this would be to say that a template
parameter pack is not deducible if it is used in a function
parameter pack not at the end of the parameter list.
template <class... T>
void f(T..., int, T...) { }
int main() {
f(0); // OK
f<int>(0,0,0); // OK
f(0,0,0); // error
}