I have the following class template:
template class MyClass;
where T is some type, N - num
T
N
May be, based on your 3rd variant, you can extract first argument from initializer list and deduce type by it
template::type = 0> void foo(U u, T2... args) { MyClass({u, args...}); }