#include <iostream>
#include <memory>
struct A
{
void fun(int a, int b) { std::cout << a << " " << b << std::endl; }
};
struct B
{
B() :stub_(new A) {}
void fun(int, void(A::*call)(int,int)) {
int a = 3;
((*stub_).*call)(1, a);
//(stub_->*call)(1, a);
}
private:
std::unique_ptr<A> stub_;
};
int main()
{
B b;
b.fun(3, &A::fun);
std::cin.get();
return 0;
}