
I have a function object that doesn't work with fusion's invoke_function_object. It is sensitive to whether arguments are passed by reference or by value, but when evaluating the result type, invoke_function_object strips top level references. On line 110 of invoke_function_object.hpp, there is: template <class Function, class Sequence> struct invoke_function_object_impl<Function,Sequence,N,true> { public: typedef typename boost::result_of< #define M(z,j,data) \ typename boost::remove_reference< \ typename result_of::at_c<Sequence,j>::type >::type Function (BOOST_PP_ENUM(N,M,~)) >::type result_type; #undef M What is the purpose of the remove_reference<> here, and can we get rid of it? -- Eric Niebler Boost Consulting www.boost-consulting.com