Are these two functions different in any meaningful way? Is there any reason to generally prefer one over the other?
void foo(auto x, auto &... y) { /* ... */ }
template<typename T, typename... Tx>
void foo(T x, Tx &... y) { /* ... */ }
I would tend to use the first when I don't need the type T handy because it's shorter... but I'm wondering if there are any drawbacks.