lambda表达式捕捉使用=报错问题

1.问题现场

 

 

 

2.提问与答案  

当[]为=时,报上述错误,而改为&时则OK.现在有个疑问,不是说用=是值传递的方式,为何n是一个不可修改的左值呢?

= 默认是 const 不能修改的,需要加上mutable可以让n能够在函数体中发生改变,但main函数中n仍然还是0.因为mutable只是保证可以修改函数里的n,但本质还是值传递.

auto f2 =[=](int x) mutable {}

 

posted @ 2020-06-06 17:27  心媛意码  阅读(287)  评论(0编辑  收藏  举报