とりあえず Boost.Function で
id:melpon:20071208 でこんな関数を書いた。
template<class TObject> boost::_bi::bind_t< void, void (*)(TObject*, boost::function<void (TObject*)>), boost::_bi::list2< boost::arg<1>, boost::_bi::value< boost::function<void (TObject*)> > > > null_check_deleter(boost::function<void (TObject*)> f) { return boost::bind(_null_check_deleter<TObject>, _1, f); }
boost::bind の戻り値が訳の分からないことになってるんだけど、よく考えてみると Boost.Bind とか Boost.Lambda とか、そんなのを格納したかったらとりあえず Boost.Function に入れておけばいいんだった。
template<class TObject> boost::function<void (TObject*)> null_check_deleter(boost::function<void (TObject*)> f) { return boost::bind(_null_check_deleter<TObject>, _1, f); }
Boost.Bind と Boost.Lambda の戻り値は Boost.Function と覚えておこうっと。