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