我喜欢新的C ++ 14添加赋予lambdas捕获移动唯一参数的能力,但我不是语法的粉丝:
Move capture in lambda
更简单的原因是什么?
auto f = [&&x]{return x->twenty_perc_cooler();};
没用过?
答案 0 :(得分:3)
N3610实际上解决了这个问题,这是一项关于移动捕获的提案:
为什么不用&&?
进行捕捉经常会问为什么我们不会支持像
这样的东西[&& x] {...}
这里的问题是我们没有通过右值引用捕获 正试图搬家。如果我们通过右值参考捕获,那么 移动会发生得太晚,因为它意图在捕获时发生 时间,而不是在通话时间。只要我们捕获那些东西 有一个名字,我们不应该做一个隐藏的举动。