I am not sure if the title makes much sense, but the example is actually quite staightforward:
// A converter struct with a generic constructor.
template
This is not the solution, but might help you or others to figure out what the problem is. The following compiles:
template <template <typename ...> class TT>
struct converter2
{
template <typename Arg0, typename ... Args>
converter2(const TT<Arg0, Args ...> &);
};
// ...
converter2<foo_variadic2>(foo_variadic2<int>{});
I have to admit I don't understand why this is necessary and why your code doesn't work.