Gregory Colvin <[EMAIL PROTECTED]> writes:

> On Tuesday, Sep 2, 2003, at 11:22 America/Denver, David Abrahams wrote:
>> Gregory Colvin <[EMAIL PROTECTED]> writes:
>>
>>> So you would rather use this than use construct?
>>>
>>>    template <typename T> T* addressof(T& v)
>>>    {
>>>      return reinterpret_cast<T*>(
>>>           &const_cast<char&>(reinterpret_cast<const volatile char
>>>           &>(v)));
>>>    }
>>
>> As long as it's packaged away and I don't have to look at the
>> implementation.  A customization point like an allocator should not be
>> required to supply boilerplate that's always going to be the same.
>
> You are assuming that there was no good reason to allow an allocator
> to hook construct and destroy, for instance to do some bookkeeping.

The fact that nobody's required to use construct and/or destroy is
testament to that.

>> When I need to find out what I need to implement in order to
>> customize allocation, I don't want to have to read through
>> something which is 50% irrelevant to the task, as the allocator
>> requirements are.
>
> Which is why I'm now suggesting that Boost UserAllocator is a better
> default.
>
> But in some cases, like the shared_ptr feature request that got me
> thinking on this, what you want is just to have objects allocate
> their internals using the same allocator as the container they
> are being placed in, in which case you don't need to implement an
> allocator, just call get_allocator().

Is it enough for all of Boost?  If so, great!  If not, we still need
to think about what a more-sophisticated interface looks like.

Also, if shared_ptr only needs to allocate at construction time (I'm
not sure of this) we can avoid storing the allocator at all.

> I'm reeling from the implication that the following is undefined
> behavior for non-POD T:
>
>       T* p = (T*)malloc(sizeof T);
>
> Are you sure?

Nope.  3.8/5 shows that I'm wrong.  It still doesn't make any sense to
return a T* from allocate since normally with a non-singular T* p,
either p == 0 or *p refers to a constructed T.


-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to