Lambda表达式
第2段说(强调我将向前):引入lambda表达式将产生一个prvalue临时对象(12.2)。这个临时对象称为闭包对象。 lambda表达式不得出现在未评估的操作数中(第5条)。[注意:闭包对象的行为类似于函数对象(20.8)。-注释]
并且第5.19节常量表达式第2段说:
条件表达式是核心常量表达式,除非它涉及以下之一作为潜在评估的子表达式(3.2),但未评估的逻辑AND(5.14),逻辑OR(5.15)和条件(5.16)操作的子表达式不予考虑[...]
并具有以下要点:
— 一个lambda表达式(5.1.2);
那么为什么lambda表达式不允许在未求值的操作数中使用,但是可以在常量表达式的未求值部分中使用呢?
我能看出来,在几种情况下(decltype或typeid),未求值操作数中的类型信息并不是很有用,因为每个lambda都有唯一的类型。虽然为什么我们想要允许它们在常量表达式的未求值上下文中使用还不清楚,也许是为了允许SFINAE?