【发布时间】:2015-10-03 18:26:20
【问题描述】:
我有一个带有 set 函数的可变参数模板类,它填充内部数组:
template <size_t Dim>
class Vector
{
public:
void SetValueTemplate(size_t index)
{
return;
}
template <typename X0, typename ...Xn>
void SetValueTemplate(size_t index, X0 x0, Xn... xn)
{
val[index] = x0;
SetCenterValueTemplate(index + 1, xn...);
}
template <typename ...X0>
void SetValue(X0... t0)
{
SetValueTemplate(0, t0...);
}
private:
double val[Dim];
};
问题是,我可以这样称呼
Vector<3> v;
v.SetValue(0, 1, 2, 4, 5);
它可以正确编译。我可以限制它不编译吗?我可以使用static_assert,但是没有它可以吗?
【问题讨论】:
标签: c++ templates c++11 variadic-templates