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