gpt4 book ai didi

C++ Lambda/Closure 混淆——如何返回一个值,而不是一个闭包

转载 作者:行者123 更新时间:2023-11-28 04:23:56 25 4
gpt4 key购买 nike

我正在努力了解 C++ 中的 FP,但对以下代码有些困惑。

我想输出值 2*a,但它似乎输出“真”,我猜是因为表达式被返回了。

int main () {
int a {5};
std::cout << [](int a) { return 2*a; };
return 0;
}

如果我遗漏了一些愚蠢而明显的东西,我们深表歉意。

最佳答案

您需要使用调用运算符 (()) 实际调用 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 被转换为一个函数指针,并且由于该指针不为空,因此打印 true。

关于C++ Lambda/Closure 混淆——如何返回一个值,而不是一个闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54857571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com