例如
void assign(vector<int> const& v, int a, float b)
{
a = v[0];
b = (float)v[1];
}
此处的值类型不必相同。我想做一个函数来分配可变数量的变量。我可以使用可变参数功能。但是我认为使用参数包可能更有效。如何执行呢?谢谢!
答案 0 :(得分:8)
折叠表达以求救助!
template <typename ...P> void assign(const std::vector<int> &v, P &... params)
{
std::size_t index = 0;
(void(params = static_cast<P>(v[index++])) , ...);
}
如果必须使用C ++ 11,则可以使用虚拟数组技巧:
template <typename ...P> void assign(const std::vector<int> &v, P &... params)
{
std::size_t index = 0;
using dummy = int[];
(void)dummy{0, (void(params = static_cast<P>(v[index++])), 0) ...};
}