是否可以约束可变参数构造函数中的参数类型?
我希望能够表达
X x1(1,3,4);
X x2(3,4,5);
// syntax error: identifier 'Args'
class X {
template<int ... Args> X(Args...)
{
}
};
// this works but allows other types than int
class Y {
template<typename ... Args> Y(Args...)
{
}
};
Run Code Online (Sandbox Code Playgroud)
编辑以澄清意图:
我想要实现的是将传递给构造函数的数据(编译时已知的常量)存储到静态数组中.
所以还有其他一些
template<int ...values>
struct Z
{
static int data[sizeof...(values)];
};
template<int ... values>
int Z<values...>::data[sizeof...(values)] = {values...};
Run Code Online (Sandbox Code Playgroud)
并且在XI的构造函数中想要像这样使用Z:
class X {
template<int ... Args> X(Args...)
{
Z<Args...>::data // do stuff with data
}
};
Run Code Online (Sandbox Code Playgroud)
这可能,我们必须使用integer_sequence吗?