|
Boost Users : |
From: Douglas Gregor (gregod_at_[hidden])
Date: 2003-02-10 12:01:16
On Monday 10 February 2003 07:19 am, Markus Werle wrote:
> Before I dig in that code: where do those copies come from?
> Is that the normal behaviour triggered ny operator() or is that a
> hint that I use them the wrong way?
operator() will not make any copies. The overhead of operator() comes from
calls through function pointers.
The most likely reason I can think of for the multitude of copy constructions
after the array is built is that you are passing boost::function2 objects to
routines that take function objects by value. Unfortunately, this is the
common way to pass function objects, e.g.,
template<typename F> void do_something(F f) { ... }
If you are using the C++ standard library algorithms, that may be your
culprit. You can pass a "reference" to those algorithms by changing 'f'
parameters to:
boost::bind(ref(f), _1, _2)
Doug
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