下面的lambda函数捕获this(因此bar()可以访问其实例变量)和局部变量a,b,c.
class Foo {
int x, y, z;
std::function<void(void)> _func;
// ...
void bar() {
int a,b,c;
// ...
_func = [this,a,b,c]() { // lambda func
int u = this->x + a;
// ...
};
}
};
Run Code Online (Sandbox Code Playgroud)
但是,如果我想捕捉许多实例变量,并希望避免明确的捕获列表命名他们,我也不会似乎能够做到这一点:
_func = [this,=]() { // lambda func
// ...
};
Run Code Online (Sandbox Code Playgroud)
我在=下面遇到编译器错误this,:
error: expected variable name or 'this' in lambda capture list
Run Code Online (Sandbox Code Playgroud)
如果我试试这个
_func = [=,this]() { // lambda func
// ...
};
Run Code Online (Sandbox Code Playgroud)
我明白了
error: 'this' cannot be explicitly captured when the capture default is '='
Run Code Online (Sandbox Code Playgroud)
是否有抓取速度this和其他所有价值的速记?