template <int S>
struct Vec {};
现在我想编写一个只接受这些向量但具有不同模板参数值的函数。它可以像这样调用:
f(Vec<1>(), Vec<2>(), Vec<3>());
我怎么写这样的功能?我想使用参数包。可能是这样的:
template<int... Ss>
f(Vec<Ss...> vecs);
我想让用户看到函数只是从其声明而不是编译错误中预期向量。
答案 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>());
}