C++ 为什么可以';我不能将constexpr与lambda函数一起使用吗?

C++ 为什么可以';我不能将constexpr与lambda函数一起使用吗?,c++,c++11,lambda,C++,C++11,Lambda,我需要一个解释。lambda与其他函数有何不同,它是不允许的?不是C++标准的一部分,这是胡说八道吗?例如,我想在C++中写一个“嵌套”函数,但是它不可能直接做,我用lambda代替。这个函数的作用很小:取一个int参数,乘以一些值并返回。这些值是定义lambda函数的本地值,它们都是constexpr,并且在运行时知道,因此我确实希望让编译器输入一个const值,而不是调用函数。这是一个非常常用的函数(这就是为什么我把它写为函数),我不想在运行时计算它。这是因为标准的列表lambda是非常量表

我需要一个解释。lambda与其他函数有何不同,它是不允许的?不是C++标准的一部分,这是胡说八道吗?例如,我想在C++中写一个“嵌套”函数,但是它不可能直接做,我用lambda代替。这个函数的作用很小:取一个int参数,乘以一些值并返回。这些值是定义lambda函数的本地值,它们都是
constexpr
,并且在运行时知道,因此我确实希望让编译器输入一个const值,而不是调用函数。这是一个非常常用的函数(这就是为什么我把它写为函数),我不想在运行时计算它。

这是因为标准的列表lambda是非常量表达式:“5.19常量表达式”…“是一个核心常量表达式,除非它涉及以下其中一个作为潜在的求值子表达式”…“-λ表达式(5.1.2);"


这足以让任何编译器拒绝包含lambda的constexpr函数。

这是因为标准列表lambda为非常量表达式:“5.19常量表达式”…“是一个核心常量表达式,除非它包含以下其中一个作为可能计算的子表达式”…”—lambda表达式(5.1.2);"


这足以让任何编译器拒绝包含lambda的constexpr函数。

请提供您的代码。N2859指出,如果在要求lambda的内容是损坏名称的一部分的上下文中允许使用lambda,则会出现严重的实现困难,而在不断表达中禁止lambdas是解决这些困难的一部分。“但这看起来像是一个自我引用,而且链接的PDF在我看来不包含任何关于
constexpr
或常量表达式的内容。@iavr:我不明白它会是什么样子。”useful@dyp:非常感谢,我被浏览器的地址栏骗了。。报价来自。请提供您的代码。表示“N2859注意到,如果lambdas在要求其内容成为损坏名称的一部分的上下文中被允许,则会出现严重的实施困难,并且禁止lambdas在常量表达式中出现是解决这些困难的一部分。”但这似乎是一个自我参考,就我所知,链接的PDF不包含任何关于
constexpr
或常量表达式的内容。@iavr:我不明白它会是什么样子useful@dyp:非常感谢,我被浏览器的地址栏骗了。。引用自。