$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Jason House (jasonhouse_at_[hidden])
Date: 2007-01-05 00:21:07
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)>