首页 > 后端开发 > C++ > Lambda 函数可以与 C 中的 `constexpr` 一起使用吗?

Lambda 函数可以与 C 中的 `constexpr` 一起使用吗?

Susan Sarandon
发布: 2024-11-02 09:51:02
原创
486 人浏览过

Can Lambda Functions Be Used with `constexpr` in C  ?

Lambda 函数和 Constexpr

问题: 是否可以在 C 中将 constexpr 与 lambda 函数一起使用?

在以下代码示例中,编译器报告与需要 constexpr 函数相关的错误:

<code class="cpp">struct Test
{
  static const int value = []() -> int { return 0; } ();
};</code>
登录后复制

答案:

更新 ( C 17): 从 C 17 开始,常量表达式中允许使用 lambda 函数。

C 17 之前的版本: 目前,C 14 中的常量表达式中不允许使用 lambda。 ,已提出一项提案 (N4487),允许某些 lambda 表达式和闭包对象出现在常量表达式中。

如果该提案被接受,它将引入以下更改:

  • 如果闭包类型的数据成员都是文字类型,则它们将被视为文字类型。
  • 如果 lambda 声明符中未提供 constexpr 说明符,则生成的函数调用运算符将​​是 constexpr(如果满足 constexpr 的要求)函数。

此更改将与隐式定义的构造函数和赋值运算符函数的行为保持一致,在适当的情况下可以将其推断为 constexpr。

以上是Lambda 函数可以与 C 中的 `constexpr` 一起使用吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板