使用 lambdas,在 C++11 中,我们可以将默认捕获模式设置为按值/按引用,例如[=]
/ [&]
,对于某些变量,可选地后跟显式捕获,按引用/按值,例如[=,&this_is_by_ref]
或[&,this_is_by_value]
。
在 C++14 中,我们还可以通过移动进行显式捕获,例如[y = std::move(x)]
.
在Effective Modern C++的第 32 条第 3 段中,我读到
初始化捕获无法表达的一件事是默认捕获模式,[...]
作者最有可能指的是什么?
我们已经有办法通过复制或引用来捕获我们需要的所有变量。为什么我们要用x = y
表格来表达呢?
也许作者只是指“默认移动捕获”?[x = std::move(x), y = std::move(y), …]
与列出的正文中使用的所有变量一样的东西?