C++ 参考λ

C++ 参考λ,c++,lambda,c++14,C++,Lambda,C++14,我想知道该标准是否允许您使用=通过引用传递所有成员。例如,这是有效的 int i = 0; auto f = [&i]() { i = 1; }; 然而,这并没有,而且在=后面放置&也并没有 int i = 0; auto f = [=]() { i = 1; }; 你的意思是: int i = 0; auto f = [&]() { i = 1; }; [=]通过值捕获lambda正文中提到的所有内容 [&]通过引用捕获lambda正文

我想知道该标准是否允许您使用
=
通过引用传递所有成员。例如,这是有效的

int i = 0;
auto f = [&i]() {
    i = 1;  
};
然而,这并没有,而且在
=
后面放置
&
也并没有

int i = 0;
auto f = [=]() {
    i = 1;  
};
你的意思是:

int i = 0;
auto f = [&]() {
    i = 1;  
};
[=]
通过值捕获lambda正文中提到的所有内容


[&]
通过引用捕获lambda正文中提到的所有内容。

在这个lambda表达式中

int i = 0;
auto f = [=]() {
    i = 1;  
};
作为lambda的数据成员的捕获变量i在lambda中更改。所以你必须写作

int i = 0;
auto f = [=]() mutable {
    i = 1;  
};
如果你想让我被引用,你应该写

int i = 0;
auto f = [=,&i]() {
    i = 1;  
};