I need to make a registry of callback functions, which are in the form of member functions of objects of various types. ----------- code snippet ----------- class T1 { public: void CallBackFcn(); }; ... class Registry { public: template <typename T> void registerFcn (void (T::*updFcn)(), T* obj ); private: vector< boost::function<void>* > fcnvec; }; template <typename T> void Registry::registerFcn(void (T::*updFcn)(), T* obj) { boost::function<void> *fp = new boost::function<void> ( boost::bind(updFcn,obj) ); fcnvec.push_back( fp ); } main() { .... T1 *pt = new T1; p_Registry->registerFcn(&T1::CallBackFcn, pt); } ----------------------------------------------------- However, before adding the boost::function to the vector, I want to make sure that the callback function isn't already in there. Unfortunately, I can't just look at value of the pointer fp - I need to get to the address of the actual callback function that is to be executed. But I can't figure out how to get there. Any help appreciated.