以 C++ 为单位的 lambda 输出

lambda output in C++

本文关键字:lambda 输出 为单位 C++      更新时间:2023-10-16

以下代码的输出为 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();