作者:乃ah麟 | 来源:互联网 | 2022-12-08 13:48
例如
void assign(vector const& v, int a, float b)
{
a = v[0];
b = (float)v[1];
}
这里的值类型不需要相同.我想创建一个函数来分配可变数量的变量.我可以使用variadic函数.但我认为使用参数包可能更有效.怎么实现呢?谢谢!
1> HolyBlackCat..:
折叠表达救援!
template void assign(const std::vector &v, P &... params)
{
std::size_t index = 0;
(void(params = static_cast(v[index++])) , ...);
}
如果必须在C++ 11中,你可以使用虚拟数组技巧:
template void assign(const std::vector &v, P &... params)
{
std::size_t index = 0;
using dummy = int[];
(void)dummy{0, (void(params = static_cast(v[index++])), 0) ...};
}