$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2008-04-25 18:32:15
AMDG
Robert Dailey wrote:
>
>
> If you only need to deal with function pointers,
>
> template<class T>
> void Subscribe(void (*callback)(const packet_t&)) {
> Subscribe(boost::function<void(const packet_t&)>(callback));
> }
>
>
> What about for function objects?
There is no way to deduce what a function object can be called with
since it can have an overloaded operator(). To deal with monomorphic
unary function objects that follow the std library conventions, use this:
(warning untested.)
BOOST_MPL_HAS_XXX_TRAIT_DEF(argument_type);
template<class T>
typename boost::enable_if<has_argument_type<T> >::type
Subscribe(const T& t) {
Subscribe(boost::function<void(const typename
boost::remove_cv<typename boost::remove_reference<typename
T::argument_type>::type>::type&)>(callback));
}
In Christ,
Steven Watanabe