#include <iostream>
#include <functional>
using namespace std;
class Bang
{
public:
Bang(int i = 0) : m_val(i)
{
m_foo = [this] {std::cout << m_val << std::endl;};
}
~Bang()
{
m_val = -1;
}
void Foo()
{
m_foo();
}
private:
int m_val;
std::function<void ()> m_foo;
};
Bang GetBang()
{
return Bang(100500);
}
int main() {
Bang b;
b = GetBang();
b.Foo();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIEJhbmcKewpwdWJsaWM6CglCYW5nKGludCBpID0gMCkgOiBtX3ZhbChpKQoJewoJCW1fZm9vID0gW3RoaXNdIHtzdGQ6OmNvdXQgPDwgbV92YWwgPDwgc3RkOjplbmRsO307Cgl9CgkKCX5CYW5nKCkKCXsKCQltX3ZhbCA9IC0xOwoJfQoJCgl2b2lkIEZvbygpCgl7CgkJbV9mb28oKTsKCX0KcHJpdmF0ZToKCWludCBtX3ZhbDsKCXN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gbV9mb287Cn07CgpCYW5nIEdldEJhbmcoKQp7CglyZXR1cm4gQmFuZygxMDA1MDApOwp9CgppbnQgbWFpbigpIHsKCUJhbmcgYjsKCWIgPSBHZXRCYW5nKCk7CgliLkZvbygpOwoJcmV0dXJuIDA7Cn0=