我有一个类与接受的整数的模板来确定的参数的固定量:功能的一个整数
template <unsigned int N>
class Example {};
我在寻找一种方法来定义一个(部件)函数接受一些数量为Example
对象作为参数。量是由N
来决定,因此功能会像这样使用:
Function(Example<2>(), Example<2>());
Function(Example<3>(), Example<3>(), Example<3>());
我试了一下,到目前为止:
使用的初始化列表,一个是能够通过一组对象的功能:
template <unsigned int N>
void Function(std::initializer_list<Example<N>> list);
//...
Function({Example<2>(), Example<2>()});
然而,除了那真的只有一个参数传递(列表)的事实,问题是,这种方法可以使用任意数量的参数:
Function({Example<2>()});
我使用可变参数函数也试过:
template <unsigned int N>
void Function(Example<N> e...)
{
va_list args;
va_start(args, e);
//...
}
Function(Example<2>(), Example<2>());
这使得可以使用真正的参数,但使用任意数量的参数的问题仍然存在,而这是不可能知道有多少争论实际上已通过。
,补充维托里奥·罗密欧的回答是:https://stackoverflow.com/questions/39659127/restrict-variadic-template-arguments – bolov