C++ lambda捕获 - 被捕获?

Ale*_*tev 0 c++ lambda capture c++11

所以我在类中有以下表达式,遵循以下定义:

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

(例如,将(this)的lambda评估复制到结果实例)

qustion是我不确定哪个是由值捕获的 - 整个对象(这个),可能是我或只是函数(ths-> funcVec [i])?

任何额外的解释和建议为什么不使用它使它更好,或确认这是好的非常受欢迎.

Mik*_*our 6

可以捕获的东西是本地自动变量,按值或引用,以及指针this,仅按值.你拉姆达使用ithis,因此他们被捕捉(假设i是一个局部变量).您按值指定了默认捕获[=],因此两者都按值捕获.

只要在调用*thislambda时对象仍然存在,这就没问题.