Boost logo

Boost Users :

From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2008-06-13 12:13:02


Khandelwal, Amit wrote:
> I am trying to understand the details of boost function. Below is the
> sample code that I am using. I was expecting the copy constructor to be
> invoked once. However, I see that it is called four times. I am trying
> to understand why does boost function need to have four copies of my
> objects. I am using boost version 1_33_1.

Generic libraries generally assume that function objects
are cheap to copy. boost::function only stores one copy
of your object, however, it is quite possible that it makes
an extra copy somewhere. In addition assuming that FUNC is an
 appropriate specialization of boost::function,

     FUNC f = F();

Is specified as copy initialization, although the compiler
is permitted to optimize the copy away.
You can check whether

F f1;
FUNC f(f1);

produces fewer copies. This of course depends on your compiler
and optimization flags.

In Christ,
Steven Watanabe

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at