Constexpr lambda默认情况下?

Aah*_*zbg 10 c++ lambda constexpr c++17

根据n4487和其他c ++ 17引用,将会有新的lambda函数说明符 - constexpr如果存在,则"明确指定函数调用运算符是一个constexpr函数." .我理解lambda中常量表达式的动机.对我来说有趣的是提案的第4点,其中指出:

4)如果constexpr在lambda声明符中省略了说明符,则函数调用运算符(或模板)constexpr是否满足constexpr函数的要求.

这引出了两个问题:

  1. 为什么我们需要constexpr说明符?看起来lambda调用操作符是否将constexpr取决于它"满足constexpr函数的要求"的事实,而不是来自 constexpr说明符的存在.
  2. 如果constexpr默认情况下可以接受lambda,那么为什么不建议其他类型的函数 - 例如全局函数?如果编译器开始处理涵盖需求的所有函数,会产生什么影响constexpr

Nic*_*las 7

  1. constexpr预选赛使其成为一个编译错误的拉姆达违反要求constexpr的功能.你明确需要 lambda 时使用它constexpr,这样你就不会意外地使用它constexpr.

  2. 问及回答.