#include <functional>
#include <iostream>
struct A
{
int foo(int a)
{
return a;
}
};
class B
{
private:
std::function<int(int)> pfoo;
public:
B(std::function<int(int)> foofunc)
: pfoo(foofunc) { }
int cFoo(int i)
{
return pfoo(i);
}
};
int main()
{
A my_a;
B my_b(std::bind(&A::foo, my_a, std::placeholders::_1));
std::cout << my_b.cFoo(2);
return 0;
}
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnN0cnVjdCBBCnsKICBpbnQgZm9vKGludCBhKQogIHsKICAgIHJldHVybiBhOwogIH0KfTsKCmNsYXNzIEIKewpwcml2YXRlOgogIHN0ZDo6ZnVuY3Rpb248aW50KGludCk+IHBmb287CnB1YmxpYzoKICBCKHN0ZDo6ZnVuY3Rpb248aW50KGludCk+IGZvb2Z1bmMpIAogICAgOiBwZm9vKGZvb2Z1bmMpIHsgfQogIGludCBjRm9vKGludCBpKQogIHsKICAgIHJldHVybiBwZm9vKGkpOyAKICB9Cn07CgppbnQgbWFpbigpCnsKCUEgbXlfYTsKCUIgbXlfYihzdGQ6OmJpbmQoJkE6OmZvbywgbXlfYSwgc3RkOjpwbGFjZWhvbGRlcnM6Ol8xKSk7CglzdGQ6OmNvdXQgPDwgbXlfYi5jRm9vKDIpOwoJcmV0dXJuIDA7Cn0=