Boost logo

Boost :

From: Eric Niebler (eric_at_[hidden])
Date: 2007-11-10 15:17:30


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

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk