#include <iostream>
#include <functional>

class Manager
{
public:
	Manager() :x_(0) {}
	const int GetX() const { return x_;	}
	inline void SetX(int x) { x_ = x; }
private:
	int x_;
};

void Print(int x) { std::cout << x << std::endl; }

int main()
{
	Manager m;
	auto test1 = std::bind(Print, m.GetX()+5);
	auto test2 = std::bind(Print, std::bind(std::plus<>(),m.GetX(), 10));
	test1();
	test2();
	m.SetX(5566);
	test1();
	test2();

	return 0;
}