我正在尝试用C ++处理FP,并对下面的代码有些困惑。
我想输出2 * a的值,但是它似乎正在输出'true',我猜这是因为表达式正在返回。
int main () {
int a {5};
std::cout << [](int a) { return 2*a; };
return 0;
}
如果我错过了一些愚蠢而显而易见的事情,表示歉意。
答案 0 :(得分:1)
您实际上需要使用调用运算符(()
)来调用lambda。在这种情况下,由于lambda需要一个值,因此您可以使用
int main () {
int a {5};
std::cout << [](int a) { return 2*a; }(a);
return 0;
}
或者,您也可以将这两位分开
int main () {
int a {5};
auto func = [](int a) { return 2*a; };
std::cout << func(a);
return 0;
}
在这种情况下,由于您有一个无法捕获的lambda,正在发生的事情是lambda将被转换为函数指针,并且由于该指针不为null,因此会打印true。