>>893
じゃあ、挙げとく

struct FuncHolderBase {};
template<typename Func>
class FuncHolder : public FuncHolderBase {
    Func func_;
public:
    FuncHolder(Func f) : func_(f) {}
    operator Func() { return func_; }
};

class C {
    std::auto_ptr<FuncHolderBase> fb_;
    typedef void(*Func)(int);
public:
    template<typename T>
    void set(T f) { fb_.reset(new FuncHolder<T>(f)); }
    template<typename T> T get() { return static_cast<FuncHolder<T>&>(*fb_); }
    Func get() { return get<Func>(); }
};

class A : public C {
    typedef void(A::*MF)(int);
    B b_;
    void print(int n) { std::cout << "Member: " << n << std::endl; }
public:
    A() { b_.set(&A::print); }
    void foo(int n) {    (this->*b_.get<MF>())(n); }
};

後は890-891と同じ