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])?
任何额外的解释和建议为什么不使用它使它更好,或确认这是好的非常受欢迎.
可以捕获的东西是本地自动变量,按值或引用,以及指针this,仅按值.你拉姆达使用i和this,因此他们被捕捉(假设i是一个局部变量).您按值指定了默认捕获[=],因此两者都按值捕获.
只要在调用*thislambda时对象仍然存在,这就没问题.