The lambda function below captures this
(so bar()
can access its instance vars) and the local variables 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;
// ...
};
}
};
But if I want to capture many instance variables and wish to avoid explicitly naming them in the capture list, I do not seem to be able to do this:
_func = [this,=]() { // lambda func
// ...
};
I get a compiler error at the =
following this,
:
error: expected variable name or 'this' in lambda capture list
If I try this
_func = [=,this]() { // lambda func
// ...
};
I get
error: 'this' cannot be explicitly captured when the capture default is '='
Is there a shorthand for capturing this
and everything else by value?
Aucun commentaire:
Enregistrer un commentaire