用C++编写的lambda输出

0 c++ lambda c++14

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

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

Pra*_*ian 6

你需要调用lambda

[&, n]() {m = n + 1; }();
//                    ^^
Run Code Online (Sandbox Code Playgroud)

现在输出应该是你所期望的.


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

auto lambda = [&, n]() {m = n + 1; };
lambda();
Run Code Online (Sandbox Code Playgroud)