具有可变数量的某些模板类型的参数的模板化函数

时间:2017-12-15 06:42:24

标签: c++ variadic-templates

template <int S>
struct Vec {};

现在我想编写一个只接受这些向量但具有不同模板参数值的函数。它可以像这样调用:

f(Vec<1>(), Vec<2>(), Vec<3>());

我怎么写这样的功能?我想使用参数包。可能是这样的:

template<int... Ss>
f(Vec<Ss...> vecs);

我想让用户看到函数只是从其声明而不是编译错误中预期向量。

1 个答案:

答案 0 :(得分:2)

您需要使用:

template <int... Ss>
void f(Vec<Ss>... vecs) { ... }

在我的设置中构建的程序:

template <int S>
struct Vec {};

template <int... Ss>
void f(Vec<Ss>... vecs)
{
}

int main()
{
   f(Vec<1>(), Vec<2>(), Vec<3>());
}