以下代码的输出是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)
你需要调用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)
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |