首页 >后端开发 >C++ >Lambda 可以用在 C 中的常量表达式中吗?

Lambda 可以用在 C 中的常量表达式中吗?

Barbara Streisand
Barbara Streisand原创
2024-10-30 00:12:29528浏览

Can Lambdas Be Used in Constant Expressions in C  ?

Lambda 可以使用 constexpr 吗?

在早期版本的 C 中,常量表达式中包含 lambda 函数受到限制,如 [表达式.const]/(2.6)。然而,工作草案 N4582 中包含的 N4487 引入了一项更改,允许在这些表达式中使用 lambda。

Constexpr Lambda 的语法

建议的更改N4487 提供了在常量表达式中使用 lambda 时的正确语法指南:

  • 常量表达式中允许使用某些 lambda 表达式。
  • 常量表达式中允许对特定闭包对象执行的操作。
  • 如果闭包类型的每个数据成员也是文字类型,则将其视为文字类型。
  • 如果 lambda 声明符中未提供 constexpr 说明符,则将考虑生成的函数调用运算符constexpr 如果它满足 constexpr 函数的要求。此行为与构造函数和赋值运算符函数的隐式 constexpr 推断一致。

早期 C 版本的解决方法

对于实施 N4487 之前的 C 版本,在常量表达式中使用 lambda 需要替代方法。一种解决方法是利用模板元编程技术来实现所需的功能。

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

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