C++ lambda 捕获 - 哪个被捕获?

C++ lambda capture - which get's captured?

所以我在 class 中有下面的表达式,定义如下:

std::vector<std::function<MyClass (const MyClass&)>> funcVec;
result->funcVec.push_back([=](const MyClass& child){
                return this->funcVec[i](child);
            });

(例如,将 (this) 的 lambda 求值复制到结果实例)

问题是我不确定哪个被值捕获 - 整个对象 (this),可能是 i 还是只是函数 (ths->funcVec[i])?

我们非常欢迎任何关于为什么不使用它的额外解释和建议,或者确认这是可以的。

可以捕获的是局部自动变量,按值或引用,指针this,仅按值。您的 lambda 使用 ithis,因此它们被捕获(假设 i 是局部变量)。您指定了按值默认捕获,[=],因此两者都按值捕获。

只要在调用 lambda 时对象 *this 仍然存在就可以了。