以下代码的输出是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/