以下代码的输出是0, 0。代码有什么问题? m是通过引用传递的,应该是1,对吗?

int main()
{
    int m = 0;
    int n = 0;
    [&, n]() {m = n + 1; };
    cout << m << endl << n << endl;
}

最佳答案

您需要调用lambda

[&, n]() {m = n + 1; }();
//                    ^^


现在输出应该是您期望的。



正如Piotr的评论所说,您还可以初始化一个变量来保存lambda并调用它

auto lambda = [&, n]() {m = n + 1; };
lambda();

关于c++ - C++中的lambda输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48315287/

10-14 12:05
查看更多