Когда this
следует использовать в лямбде для вызова функции-члена класса?У меня есть пример ниже, где hello();
вызывается без this
, но this->goodbye();
делает:
#include <iostream>
class A
{
void hello() { std::cout << "hello" << std::endl; }
void goodbye() { std::cout << "goodbye" << std::endl; }
public:
void greet()
{
auto hi = [this] () { hello(); }; // Don't need this.
auto bye = [this] () { this->goodbye(); }; // Using this.
hi();
bye();
}
};
int main()
{
A a;
a.greet();
return 0;
}
Есть ли какое-либо преимущество перед одним из них?
Редактировать:Лямбда для hello
ничего не захватывает, но она наследует функции, существующие в области видимости класса.Он не может сделать это для членов, почему он может сделать это для функций?