Разница между синтаксисом захвата this в лямбде
В чём разница между следующими захватами в лямбде?
struct A {
void f(int x) {
[=]{}; // (1)
[=, this]{}; // (2)
[=, *this]{}; // (3)
}
};
int main() {}
Ответы (1 шт):
Автор решения: HolyBlackCat
→ Ссылка
*this захватывает текущий объект по значению, т.е. копирует *this в лямбду.
this захватывает его по ссылке.
& по умолчанию захватывает this, если он нужен (по ссылке, как и все остальное).
= почему-то тоже захватывает this по ссылке (если он нужен), хотя все остальное - по значению. Начиная с C++20, захват this через = стал устаревшим. Видимо когда-то хотят переделать на нормальный захват по значению.