首页 > 后端开发 > C++ > 正文

如何在 C 中迭代可变参数模板参数列表?

Linda Hamilton
发布: 2024-10-23 17:17:01
原创
106 人浏览过

How to Iterate Over Variadic Template Argument Lists in C  ?

迭代可变参数模板参数列表

打包可变参数模板参数列表虽然功能强大,但可能会给访问单个参数带来挑战。当需要迭代此类列表以根据其类型分隔参数时,此问题尤其相关。

要实现此目的,一种选择是利用 C 17 中引入的折叠表达式。在这种情况下,使用 lambda 表达式,可以定义一个循环来迭代参数并执行所需的操作。

这是一个示例:

<code class="cpp">#include <iostream>

template <class ... Ts>
void Foo(Ts && ... inputs) {
  int i = 0;

  // Lambda that executes for each passed argument.
  ([&] {
    ++i;
    std::cout << "input " << i << " = " << inputs << std::endl;
  }(), ...);
}

int main() {
  Foo(2, 3, 4u, (int64_t)9, 'a', 2.3);
  return 0;
}</code>
登录后复制

在这个示例中,lambda 非常简洁,但可以在循环内执行更复杂的操作。需要注意的是,此技术需要 C 17 或更高版本。

对于需要返回或中断迭代的场景,可以使用 try/throw 和variable/if 切换方法,但应将其视为代码异味和仅在不可避免时使用。

以上是如何在 C 中迭代可变参数模板参数列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!