如何迭代打包的可变参数模板参数列表
迭代打包的可变参数模板参数列表需要解决两个挑战:从列表中提取数据并确定数量
提取数据
一种方法涉及将数据包装为自定义类型,将其扩展为向量,然后对其进行迭代。然而,这种方法需要复杂的函数调用并限制参数类型。
计数参数
传统方法(如递归或循环)在宏生成的函数中不可行。相反,可以使用 lambda 函数。
Lambda 函数解决方案
使用折叠表达式 (C 17),我们可以使用 lambda 函数迭代参数:
<code class="cpp">template <class ... Ts> void Foo(Ts &&... inputs) { int i = 0; ([&] { ++i; std::cout << "input " << i << " = " << inputs << std::endl; }(), ...); }</code>
此 lambda 可以在迭代期间执行操作,例如打印参数。
处理返回和中断
对于复杂的循环,可以使用:
通过利用折叠表达式和 lambda 函数,我们可以有效地迭代打包的可变参数模板参数列表,提取数据并根据需要处理中断/返回。
以上是如何有效地迭代打包的可变参数模板参数列表?的详细内容。更多信息请关注PHP中文网其他相关文章!