首页 >后端开发 >C++ >Lambda 函数可以在 `constexpr` 表达式中使用吗?

Lambda 函数可以在 `constexpr` 表达式中使用吗?

Patricia Arquette
Patricia Arquette原创
2024-11-01 01:15:28521浏览

Can Lambda Functions Be Used in `constexpr` Expressions?

Constexpr 对 Lambda 函数的支持

原始问题:

lambda 函数可以使用 constexpr关键字?

响应:

在 C 14 中,constexpr 不支持 lambda 函数。然而,随着 N4487 的采用,这种情况将会改变。该提案将允许常量表达式中的 lambda 和特定闭包类型操作。

说明:

在 C 14 标准的 [expr.const]/(2.6) 下, lambda 被排除在常量表达式之外。 N4487 中概述了此限制:

“此提案建议在常量表达式中允许 **lambda 表达式**,从而删除现有限制。作者建议某些 **lambda 表达式** 和操作允许某些闭包对象出现在常量表达式中。”

此外,该提案还指出:

  • 如果闭包类型的数据成员都是文字类型,则将其视为文字类型。
  • 如果 lambda 声明符中省略了 constexpr 说明符,则只要满足 constexpr 函数的要求,生成的函数调用运算符就会变为 constexpr。此行为类似于隐式定义的构造函数和赋值运算符的 constexpr 推理。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn