我有下面一个快速测试:C++ 11:可变的lambda似乎没有改变变量?
#include<iostream>
using namespace std;
int main(){
int i=2;
auto f=[=]()mutable{++i;};
f();
f();
cout<<i<<endl;
return 0;
}
但结果仍然打印“2”。为什么我不在可变的lambda里面修改?我正在使用clang --std = C++ 1z。
谢谢!
如果lambda打印出它自己的'i'副本,这可能有助于说明差异。然后你会看到它的值不同于'main'的范围中的'int i'。 –