#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;
}