我需要对此进行解释。 lambda与其他功能有什么不同呢?不允许这样做?这是否是不属于C ++标准的废话?例如,我想写一个"嵌套"在C ++中运行,但是不能直接做,我确实使用lambda而不是。这个函数做了一个非常小的工作:取一个int参数并乘以一些值并返回。这个值是定义lambda函数的本地,它们都是constexpr
,并且在运行时知道这个原因我想让编译器放入一个const值而不是调用函数。它经常使用的功能(这就是为什么我把它写成函数)并且我不希望在运行时计算这个beging。
答案 0 :(得分:4)
这是因为标准列表lambda为非常量表达式:" 5.19常量表达式" ..."是一个核心常量表达式,除非它涉及下列其中一个作为潜在评估的子表达式" ......" - lambda表达式(5.1.2);"
这对于任何编译器来说都足以拒绝涉及lambda的constexpr函数。