我有一個類與接受的整數的模板來確定的參數的固定量:功能的一個整數
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