Just as the question states and to be sure, am I missing anything on this? Something important/obvious that I overlooked? As is, I can save any functor, function pointer and member function pointer using this delegate class (copy ctor and assignment operator left out for brevity, as were the versions with parameters).template<class Type>void Deleter(void* object){    Type* obj_ptr = static_cast<Type*>(object);    delete obj_ptr;}template<class Functor>struct DelegateHelper{    typedef typename Functor::result_type result_type;    DelegateHelper(Functor func)        : func_(func)    {}    result_type operator()(){        return func_();    }    Functor func_;};template<class Obj, class R>struct DelegateHelper<R (Obj::*)()>{    typedef R (Obj::*FuncPtr)();    DelegateHelper(Obj* obj_ptr, FuncPtr func)        : object_(obj_ptr)        , func_(func)    {}    R operator()(){        return (object_->*func_)();    }    Obj* object_;    FuncPtr func_;};template<class R>struct DelegateHelper<R (*)()>{    typedef R (*FuncPtr)();    DelegateHelper(FuncPtr func)        : func_(func)    {}    R operator()(){        return (*func_)();    }    FuncPtr func_;};template<class Sig>struct Delegate;template<class R>struct Delegate<R ()>{    typedef R (*SinkPtr)(void*);    Delegate()        : object_(0)        , func_(0)        , deleter_(0)    {}    template<class F>    Delegate(F func)        : object_(new DelegateHelper<F>(func))        , func_(&Sink<DelegateHelper<F> >)        , deleter_(&Deleter<DelegateHelper<F> >)    {}    template<class C, class F>    Delegate(C* obj, F func)        : object_(new DelegateHelper<F>(obj, func))        , func_(&Sink<DelegateHelper<F> >)        , deleter_(&Deleter<DelegateHelper<F> >)    {}    ~Delegate(){        if(deleter_)            (*deleter_)(object_);    }    R operator()(){        return (*func_)(object_);    }    template<class Type>    static R Sink(void* obj_ptr){        Type* object = (Type*)obj_ptr;        return (*object)();    }    typedef void (*DeleteFunc)(void*);    void* object_;    SinkPtr func_;    DeleteFunc deleter_;};For the delegate in effect, see here on Ideone.
Anything I'm missing on this delegate implementation?
c++;delegates