$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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.