Лямбда-функция ниже захватывает 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;
// ...
};
}
};
Но если я хочу перехватить множество переменных экземпляра и избежать явного именования их в списке захвата, я не , похоже, смогу сделать это:
_func = [this,=]() { // lambda func
// ...
};
Я получаю ошибку компилятора при =
после this,
:
error: expected variable name or 'this' in lambda capture list
Если я попробую это
_func = [=,this]() { // lambda func
// ...
};
Я получаю
error: 'this' cannot be explicitly captured when the capture default is '='
Есть ли сокращение для захвата this
и всего остального по значению?