
I've tried to create a simpler version of my problem. The code below also does not compile. The full compiler output is at the bottom of this message.
#include <boost/function.hpp> #include <boost/lambda/bind.hpp>
namespace gtp_detail{ template<typename input_t, typename output_t> output_t converter(input_t x){ output_t y; return y; } };
typedef boost::function1<double, double> GTPFunctionObject;
namespace gtp_detail{
template<typename R0, typename T0> struct type_wrapper1{ static double wrap(boost::function1<R0,T0>* callback_function, double cmd){ unsigned int position = 0; T0 a0; return converter<R0, std::string>((*callback_function)(a0)); } };
template<typename T0> struct type_wrapper1<void,T0>{ static double wrap(boost::function1<void,T0>* callback_function, double cmd){ unsigned int position; T0 a0; (*callback_function)(a0); }; };
};
template<typename R0, typename T0> GTPFunctionObject* GTPCommandCallBack1(boost::function1<R0,T0> *callback_function){ return new GTPFunctionObject(boost::lambda::bind((gtp_detail::type_wrapper1<R0,T0>::wrap),boost::lambda::_1)); }
int main(int argc, char** argv){ boost::function1<void,int> *f1a = new boost::function1<void,int>(); GTPCommandCallBack1(f1a); }
/home/jhouse/boost_1_33_1/boost/tuple/detail/tuple_basic.hpp: In constructor ‘boost::tuples::cons<HT, TT>::cons(T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&, T9&, T10&) [with T1 = double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double)const, T2 = const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, T3 = const boost::tuples::null_type, T4 = const boost::tuples::null_type, T5 = const boost::tuples::null_type, T6 = const boost::tuples::null_type, T7 = const boost::tuples::null_type, T8 = const boost::tuples::null_type, T9 = const boost::tuples::null_type, T10 = const boost::tuples::null_type, HT = double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), TT = boost::tuples::cons<const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type>]’: /home/jhouse/boost_1_33_1/boost/tuple/detail/tuple_basic.hpp:546: instantiated from ‘boost::tuples::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::tuple(typename boost::tuples::access_traits<T0>::parameter_type, typename boost::tuples::access_traits<TT>::parameter_type) [with T0 = double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), T1 = const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, T2 = boost::tuples::null_type, T3 = boost::tuples::null_type, T4 = boost::tuples::null_type, T5 = boost::tuples::null_type, T6 = boost::tuples::null_type, T7 = boost::tuples::null_type, T8 = boost::tuples::null_type, T9 = boost::tuples::null_type]’ /home/jhouse/boost_1_33_1/boost/lambda/detail/bind_functions.hpp:220: instantiated from ‘const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, typename boost::lambda::detail::bind_tuple_mapper<const Arg1, const Arg2, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>::type> > boost::lambda::bind(const Arg1&, const Arg2&) [with Arg1 = double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), Arg2 = boost::lambda::lambda_functor<boost::lambda::placeholder<1> >]’ test.cpp:39: instantiated from ‘GTPFunctionObject* GTPCommandCallBack1(boost::function1<R0, T0, std::allocator<boost::function_base> >*) [with R0 = void, T0 = int]’ test.cpp:44: instantiated from here /home/jhouse/boost_1_33_1/boost/tuple/detail/tuple_basic.hpp:360: error: no matching function for call to ‘boost::tuples::detail::non_storeable_type<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double)>::non_storeable_type(double (&)(boost::function1<void, int, std::allocator<boost::function_base> >*, double)const)’ /home/jhouse/boost_1_33_1/boost/tuple/detail/tuple_basic.hpp:305: note: candidates are: boost::tuples::detail::non_storeable_type<T>::non_storeable_type() [with T = double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double)] /home/jhouse/boost_1_33_1/boost/tuple/detail/tuple_basic.hpp:304: note: boost::tuples::detail::non_storeable_type<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double)>::non_storeable_type(const boost::tuples::detail::non_storeable_type<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double)>&) /home/jhouse/boost_1_33_1/boost/lambda/detail/select_functions.hpp: In static member function ‘static RET boost::lambda::detail::r_select<RET>::go(Any&, A&, B&, C&, Env&) [with Any = double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double)const, A = double, B = const boost::tuples::null_type, C = const boost::tuples::null_type, Env = const boost::tuples::null_type, RET = double (&)(boost::function1<void, int, std::allocator<boost::function_base> >*, double)]’: /home/jhouse/boost_1_33_1/boost/lambda/detail/lambda_functor_base.hpp:408: instantiated from ‘RET boost::lambda::lambda_functor_base<boost::lambda::action<2, Act>, Args>::call(A&, B&, C&, Env&) const [with RET = double, A = double, B = const boost::tuples::null_type, C = const boost::tuples::null_type, Env = const boost::tuples::null_type, Act = boost::lambda::function_action<2, boost::lambda::detail::unspecified>, Args = boost::tuples::tuple<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>]’ /home/jhouse/boost_1_33_1/boost/lambda/detail/lambda_functors.hpp:148: instantiated from ‘typename T::sig<boost::tuples::tuple<A&, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >::type boost::lambda::lambda_functor<Base>::operator()(A&) const [with A = double, T = boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >]’ /home/jhouse/boost_1_33_1/boost/function/function_template.hpp:119: instantiated from ‘static R boost::detail::function::function_obj_invoker1<FunctionObj, R, T0>::invoke(boost::detail::function::any_pointer, T0) [with FunctionObj = boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, R = double, T0 = double]’ /home/jhouse/boost_1_33_1/boost/function/function_template.hpp:479: instantiated from ‘void boost::function1<R, T0, Allocator>::assign_to(FunctionObj, boost::detail::function::function_obj_tag) [with FunctionObj = boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, R = double, T0 = double, Allocator = std::allocator<boost::function_base>]’ /home/jhouse/boost_1_33_1/boost/function/function_template.hpp:430: instantiated from ‘void boost::function1<R, T0, Allocator>::assign_to(Functor) [with Functor = boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, R = double, T0 = double, Allocator = std::allocator<boost::function_base>]’ /home/jhouse/boost_1_33_1/boost/function/function_template.hpp:294: instantiated from ‘boost::function1<R, T0, Allocator>::function1(Functor, typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, int>::type) [with Functor = boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, R = double, T0 = double, Allocator = std::allocator<boost::function_base>]’ test.cpp:39: instantiated from ‘GTPFunctionObject* GTPCommandCallBack1(boost::function1<R0, T0, std::allocator<boost::function_base> >*) [with R0 = void, T0 = int]’ test.cpp:44: instantiated from here /home/jhouse/boost_1_33_1/boost/lambda/detail/select_functions.hpp:55: error: invalid initialization of reference of type ‘double (&)(boost::function1<void, int, std::allocator<boost::function_base> >*, double)’ from expression of type ‘double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double)const’ /home/jhouse/boost_1_33_1/boost/lambda/detail/actions.hpp: In static member function ‘static RET boost::lambda::function_action<2, T>::apply(A1&, A2&) [with RET = double, A1 = double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), A2 = double, T = boost::lambda::detail::unspecified]’: /home/jhouse/boost_1_33_1/boost/lambda/detail/lambda_functor_base.hpp:408: instantiated from ‘RET boost::lambda::lambda_functor_base<boost::lambda::action<2, Act>, Args>::call(A&, B&, C&, Env&) const [with RET = double, A = double, B = const boost::tuples::null_type, C = const boost::tuples::null_type, Env = const boost::tuples::null_type, Act = boost::lambda::function_action<2, boost::lambda::detail::unspecified>, Args = boost::tuples::tuple<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>]’ /home/jhouse/boost_1_33_1/boost/lambda/detail/lambda_functors.hpp:148: instantiated from ‘typename T::sig<boost::tuples::tuple<A&, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >::type boost::lambda::lambda_functor<Base>::operator()(A&) const [with A = double, T = boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >]’ /home/jhouse/boost_1_33_1/boost/function/function_template.hpp:119: instantiated from ‘static R boost::detail::function::function_obj_invoker1<FunctionObj, R, T0>::invoke(boost::detail::function::any_pointer, T0) [with FunctionObj = boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, R = double, T0 = double]’ /home/jhouse/boost_1_33_1/boost/function/function_template.hpp:479: instantiated from ‘void boost::function1<R, T0, Allocator>::assign_to(FunctionObj, boost::detail::function::function_obj_tag) [with FunctionObj = boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, R = double, T0 = double, Allocator = std::allocator<boost::function_base>]’ /home/jhouse/boost_1_33_1/boost/function/function_template.hpp:430: instantiated from ‘void boost::function1<R, T0, Allocator>::assign_to(Functor) [with Functor = boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, R = double, T0 = double, Allocator = std::allocator<boost::function_base>]’ /home/jhouse/boost_1_33_1/boost/function/function_template.hpp:294: instantiated from ‘boost::function1<R, T0, Allocator>::function1(Functor, typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, int>::type) [with Functor = boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, R = double, T0 = double, Allocator = std::allocator<boost::function_base>]’ test.cpp:39: instantiated from ‘GTPFunctionObject* GTPCommandCallBack1(boost::function1<R0, T0, std::allocator<boost::function_base> >*) [with R0 = void, T0 = int]’ test.cpp:44: instantiated from here /home/jhouse/boost_1_33_1/boost/lambda/detail/actions.hpp:87: error: no matching function for call to ‘boost::lambda::function_adaptor<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double)>::apply(double (&)(boost::function1<void, int, std::allocator<boost::function_base> >*, double), double&)’ /home/jhouse/boost_1_33_1/boost/tuple/detail/tuple_basic.hpp: In static member function ‘static RET boost::tuples::detail::get_class<0>::get(const boost::tuples::cons<HT, TT>&) [with RET = double (&)(boost::function1<void, int, std::allocator<boost::function_base> >*, double)const, HT = double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), TT = boost::tuples::cons<const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type>]’: /home/jhouse/boost_1_33_1/boost/tuple/detail/tuple_basic.hpp:292: instantiated from ‘typename boost::tuples::access_traits<typename boost::tuples::element<N, boost::tuples::cons<HT, TT>
::type>::const_type boost::tuples::get(const boost::tuples::cons<HT, TT>&) [with int N = 0, HT = double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), TT = boost::tuples::cons<const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type>]’ /home/jhouse/boost_1_33_1/boost/lambda/detail/lambda_functor_base.hpp:408: instantiated from ‘RET boost::lambda::lambda_functor_base<boost::lambda::action<2, Act>, Args>::call(A&, B&, C&, Env&) const [with RET = double, A = double, B = const boost::tuples::null_type, C = const boost::tuples::null_type, Env = const boost::tuples::null_type, Act = boost::lambda::function_action<2, boost::lambda::detail::unspecified>, Args = boost::tuples::tuple<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>]’ /home/jhouse/boost_1_33_1/boost/lambda/detail/lambda_functors.hpp:148: instantiated from ‘typename T::sig<boost::tuples::tuple<A&, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >::type boost::lambda::lambda_functor<Base>::operator()(A&) const [with A = double, T = boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >]’ /home/jhouse/boost_1_33_1/boost/function/function_template.hpp:119: instantiated from ‘static R boost::detail::function::function_obj_invoker1<FunctionObj, R, T0>::invoke(boost::detail::function::any_pointer, T0) [with FunctionObj = boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, R = double, T0 = double]’ /home/jhouse/boost_1_33_1/boost/function/function_template.hpp:479: instantiated from ‘void boost::function1<R, T0, Allocator>::assign_to(FunctionObj, boost::detail::function::function_obj_tag) [with FunctionObj = boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, R = double, T0 = double, Allocator = std::allocator<boost::function_base>]’ /home/jhouse/boost_1_33_1/boost/function/function_template.hpp:430: instantiated from ‘void boost::function1<R, T0, Allocator>::assign_to(Functor) [with Functor = boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, R = double, T0 = double, Allocator = std::allocator<boost::function_base>]’ /home/jhouse/boost_1_33_1/boost/function/function_template.hpp:294: instantiated from ‘boost::function1<R, T0, Allocator>::function1(Functor, typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, int>::type) [with Functor = boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double), const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, R = double, T0 = double, Allocator = std::allocator<boost::function_base>]’ test.cpp:39: instantiated from ‘GTPFunctionObject* GTPCommandCallBack1(boost::function1<R0, T0, std::allocator<boost::function_base> >*) [with R0 = void, T0 = int]’ test.cpp:44: instantiated from here /home/jhouse/boost_1_33_1/boost/tuple/detail/tuple_basic.hpp:121: error: invalid initialization of reference of type ‘double (&)(boost::function1<void, int, std::allocator<boost::function_base> >*, double)const’ from expression of type ‘const boost::tuples::detail::non_storeable_type<double ()(boost::function1<void, int, std::allocator<boost::function_base> >*, double)>’