Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2003-08-26 12:23:48


E. Gladyshev wrote:
> --- Gregory Colvin <gregory.colvin_at_[hidden]> wrote:
>> For shared_ptr the count is allocated by the following line in the
>> shared_count
>> constructor:
>>
>> new sp_counted_base_impl<P, D>(p, d);
>>
>> So it might be possible to make the allocation customizable by
>> specializing
>> sp_counted_base_impl.
>
> I think it would be great.
>
> However there is another problem.
> You have to new your object.
> shared_ptr<MyClass> s( new MyClass );

You can allocate your object however you want:

shared_ptr<MyClass> s(MyClass::allocate(), MyClass::deallocate);

and of course there is also the textbook way of defining a suitable
MyClass::operator new.

> You cannot use allocator like you would expect:
> shared_ptr< MyClass, std::allocator<MyClass> > s;

Leaving aside the issue of whether specializing std::allocator<MyClass> is a
good idea:

shared_ptr< MyClass, MyAllocator > s;

note that you now wouldn't be able to pass s to a function that expects
shared_ptr<MyClass> since the type is not the same.


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