Boost logo

Boost :

Subject: Re: [boost] make_shared and allocate_shared for classes with privateconstructors
From: Michael Marcin (mike.marcin_at_[hidden])
Date: 2008-11-06 13:42:00


Peter Dimov wrote:
> Michael Marcin:
>> I have some classes that derive from enable_shared_from_this which
>> I've given private constructors and static creation methods which
>> return a shared_ptr. This prevents someone from using the class
>> inappropriately. It seems obvious that at a minimum using make_shared
>> internally here would be an improvement. Unfortunately this requires
>> that make_shared be > made a friend for every arity and probably won't
>> work with the variadic template implementation of make_shared.
>>
>> Is it possible to make declaring friendship for make_shared and
>> allocate_shared simpler? I thinking something like serialization does
>> with friend class boost::serialization::access.
>
> One possible solution that springs to mind is to make allocate_shared
> use A::construct instead of doing placement new. You would then be able
> to make the allocator a friend.
>
> But please do submit a Trac ticket for this if you haven't already.
>

Done:

https://svn.boost.org/trac/boost/ticket/2481

-- 
Michael Marcin

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