xxxxxxxxxx
template<class Args>
void Foo(Agrs* arguments);
template<class Args>
class A;
/* Variadic templates can be used to allow a multitude of variations
of a class or function to be compiled without having to explicitly
state what the required amount of template parameters are.
In order to use the parameter pack you need to unpack it. This can be
done through C++17 fold expressions or using recursion:*/
template<typename Arg>
void Foo(Arg* arg)
{
// do something.
}
template<typename Arg, typename Args>
void Foo(Arg* arg, Args* args)
{
Foo(arg);
Foo(args);
}