Lambda通过引用

时间:2016-04-03 09:39:42

标签: c++ lambda c++14

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

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

但是,这不会,&也不会放在=的后面。

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

2 个答案:

答案 0 :(得分:8)

你的意思是:

tabBarVC

int i = 0; auto f = [&]() { i = 1; }; 按值捕获lambda体中提到的所有内容。

[=]通过引用捕获lambda体内提到的所有内容。

答案 1 :(得分:1)

在这个lambda表达式中

optimized_alpha = sp.optimize.minimize(lambda t: fun(X, t, y), alpha, method="Newton-CG", jac=True)

作为lambda的数据成员的捕获变量i在lambda中更改。所以你必须写

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

如果你想通过引用捕获我,你应该写

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