Boost logo

Boost Users :

Subject: [Boost-users] [Function] Takes functor by value not reference?
From: Alexander Lamaison (awl03_at_[hidden])
Date: 2010-02-14 10:42:24


I may be misunderstanding as the boost::function code is tricky to follow
but it seems to me that the function contructor takes the functor it is
passed by value rather than by reference.

This requires the functor to be copyable. In my case I'm trying to pass a
functor as its abstract supertype which prevents copying. Is it not
possible to take the functor my reference, thereby removing the need for
copying?

The constructor in question appears in function_template.hpp at line 1056
in version 1.40.0:

Summarised:

template<typename R BOOST_FUNCTION_COMMA
         BOOST_FUNCTION_TEMPLATE_PARMS>
class function<BOOST_FUNCTION_PARTIAL_SPEC>
  : public BOOST_FUNCTION_FUNCTION<R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_ARGS>
{
  typedef BOOST_FUNCTION_FUNCTION<R BOOST_FUNCTION_COMMA
BOOST_FUNCTION_TEMPLATE_ARGS> base_type;

  template<typename Functor>
  function(Functor f) :
    base_type(f)
  {
  }
}

Many thanks.

Alex Lamaison

--
http://swish.sourceforge.net

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net