【发布时间】:2019-11-12 12:52:04
【问题描述】:
在以下最小示例中:
int main()
{
const int foo = 1;
const auto a = foo == 1 ? [](){return 42;} : [](){return 4;};
const auto b = foo == 1 ? [foo](){return 42;} : [foo](){return 4;};
}
a 很好。 b 然而不是,因为:
<source>:5:29: error: incompatible operand types ('(lambda at <source>:5:31)' and '(lambda at <source>:5:53)')
const auto b = foo == 1 ? [foo](){return 42;} : [foo](){return 4;};
^ ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
为什么会这样?又如何获得预期的b?
【问题讨论】:
-
foo的常量可能与潜在问题有关,但与所述问题无关。