#include <iostream>
#include <functional>
class Foo
{
int x, y, z;
std::function<void(void)> _func;
public:
Foo(int a): x(a), y(0), z(0) {}
void bar()
{
int a = 1,b,c;
_func = [=]()
{
int u = this->x + a;
std::cout << u << std::endl;
};
_func(); // lambda call
}
};
int main()
{
Foo obj(1);
obj.bar();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KCmNsYXNzIEZvbwp7CiAgaW50IHgsIHksIHo7CiAgc3RkOjpmdW5jdGlvbjx2b2lkKHZvaWQpPiBfZnVuYzsKCnB1YmxpYzoKICBGb28oaW50IGEpOiB4KGEpLCB5KDApLCB6KDApICB7fQoKICB2b2lkIGJhcigpCiAgewogICAgaW50IGEgPSAxLGIsYzsKICAgIF9mdW5jID0gWz1dKCkKICAgIHsKICAgICAgaW50IHUgPSB0aGlzLT54ICsgYTsKICAgICAgc3RkOjpjb3V0IDw8IHUgPDwgc3RkOjplbmRsOwogICAgfTsKICAgIAogICAgX2Z1bmMoKTsgLy8gbGFtYmRhIGNhbGwKICB9Cn07CgppbnQgbWFpbigpCnsKICBGb28gb2JqKDEpOwogIG9iai5iYXIoKTsKfQ==