#include <iostream>
#include <functional>
class A
{
std::function<void()> m_Lambda;
public:
A(std::function<void()> lambda): m_Lambda(lambda) {}
void ExecuteLambda()
{
m_Lambda();
}
};
int main()
{
int i1 = 1;
int i2 = 2;
const auto lambda = [&]()
{
std::cout << "i1 == " << i1 << std::endl;
std::cout << "i2 == " << i2 << std::endl;
};
A a(lambda);
a.ExecuteLambda();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KCmNsYXNzIEEKewogICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fTGFtYmRhOwoKcHVibGljOgogICAgQShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbGFtYmRhKTogbV9MYW1iZGEobGFtYmRhKSB7fQoKICAgIHZvaWQgRXhlY3V0ZUxhbWJkYSgpCiAgICB7CiAgICAgICAgbV9MYW1iZGEoKTsKICAgIH0KfTsKCmludCBtYWluKCkKewogICAgaW50IGkxID0gMTsKICAgIGludCBpMiA9IDI7CiAgICAKICAgIGNvbnN0IGF1dG8gbGFtYmRhID0gWyZdKCkKICAgIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgImkxID09ICIgPDwgaTEgPDwgc3RkOjplbmRsOwogICAgICAgIHN0ZDo6Y291dCA8PCAiaTIgPT0gIiA8PCBpMiA8PCBzdGQ6OmVuZGw7CiAgICB9OwoKICAgIEEgYShsYW1iZGEpOwogICAgYS5FeGVjdXRlTGFtYmRhKCk7CgoJcmV0dXJuIDA7Cn0=