From: Douglas Gregor (doug.gregor_at_[hidden])
Date: 2007-06-04 23:24:55
On Jun 4, 2007, at 10:57 PM, Emil Dotchevski wrote:
> One important advantage of using boost::function is that it acts
> like a
> function pointer, reducing physical coupling between compilation
> units. This
> is very much like shared_ptr.
> A nice feature of shared_ptr is that it has a single template
> parameter, T,
> even though diferent instances of shared_ptr<T> can use different
> When using boost::function, one can also provide an allocator, but
> shared_ptr, the allocator is a default parameter of the
> class template.
> Is there a reason why this is necessary? Can't boost::function use
> technique to the one employed by shared_ptr to avoid the need for this
> second template parameter?
You know, I never even thought about adding it. I didn't know about
the shared_ptr technique when I put the allocator into
boost::function, and after the C++ committee removed the allocator I
didn't think about it any more.
The biggest issue with moving the allocator into the constructor
(like shared_ptr) is that boost::function doesn't know what type it
is going to be interacting with... shared_ptr<T> knows it's 'T',
function does not. However, I think we can work around this issue. It
certainly would be better to have the allocator supplied in the
I don't know when I would have time to implement this, although I
would certainly consider adding this functionality to Boost's
"function". Might you be interested in implementing it?
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk