#include <iostream>
#include <functional>
class foo;
foo *f;
class foo
{
std::function<void()> bar;
public:
foo(std::function<void()> bar)
: bar(bar)
{
f = this;
}
void run()
{
bar();
}
};
int &func()
{
int *i = new int;
std::cout << i << std::endl;
new foo
([=]
{
*i = 42;
std::cout << i << std::endl;
});
return *i;
}
int main()
{
int &i = func();
f->run();
std::cout << &i << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KIApjbGFzcyBmb287CmZvbyAqZjsKIApjbGFzcyBmb28KewogIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBiYXI7CiAKcHVibGljOgogIGZvbyhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gYmFyKQogICAgOiBiYXIoYmFyKQogIHsKICAgIGYgPSB0aGlzOwogIH0KIAogIHZvaWQgcnVuKCkKICB7CiAgICBiYXIoKTsKICB9Cn07CiAKaW50ICZmdW5jKCkKewogIGludCAqaSA9IG5ldyBpbnQ7CiAgc3RkOjpjb3V0IDw8IGkgPDwgc3RkOjplbmRsOwogIG5ldyBmb28KICAgIChbPV0KICAgICB7CiAgICAgICAqaSA9IDQyOwogICAgICAgc3RkOjpjb3V0IDw8IGkgPDwgc3RkOjplbmRsOwogICAgIH0pOwogIHJldHVybiAqaTsKfQogCmludCBtYWluKCkKewogIGludCAmaSA9IGZ1bmMoKTsKICBmLT5ydW4oKTsKICBzdGQ6OmNvdXQgPDwgJmkgPDwgc3RkOjplbmRsOwogIHJldHVybiAwOwp9