小编Arn*_*sen的帖子

Lambda按值捕获和"mutable"关键字

mutablelambdas中关键字的需求是一个非常混乱的根源.

考虑一下代码:

int x = 10;

function<void()> lambda = [=]() mutable {x++; cout << "Inside lambda: x = " << x << "\n";};

cout << "Before lambda: x = " << x << "\n";
lambda();
cout << "After  lambda: x = " << x << "\n\n";
Run Code Online (Sandbox Code Playgroud)

输出:

Before lambda: x = 10
Inside lambda: x = 11
After  lambda: x = 10
Run Code Online (Sandbox Code Playgroud)

我们可以看到,变量x在lambda之后保持不变,因此没有副作用.

但是,如果我们"忘记"关键字mutable,我们会收到错误.

作为通过值传递的参数是C++中的默认值,对我来说,mutable关键字的需求是没有意义的.

有人可以编写(甚至在伪代码中)编译器生成的类来代替lambda吗?

谢谢

c++ lambda

5
推荐指数
2
解决办法
2300
查看次数

标签 统计

c++ ×1

lambda ×1