$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Glen Fernandes (glen.fernandes_at_[hidden])
Date: 2020-01-29 04:56:29
On Tue, Jan 28, 2020 at 10:51 PM Gavin Lambert via Boost
<boost_at_[hidden]> wrote:
>
> On 25/01/2020 01:21, Glen Fernandes wrote:
> > Heap storage, fixed size at runtime:
> > allocate_unique<T[]>(alloc, size, ...)
> >
> > Gives users everything they need for buffers. (They don't need a Container
> > that is copyable).
>
> Not quite. These keep the storage pointer and the storage size
> separately,
Yes quite. i.e. What you believe is not true boost::allocate_unique.
i.e. For auto p = boost::allocate_unique<T[]>(a, n);
assert(p.get().size() == n);
This is because the unique_ptr stores a pointer adaptor around the
Allocator::pointer which also stores the size.
So the pointer and size are stored together in the unique_ptr result.
To get the plain Allocator::pointer out of it you can use p.get().ptr()
Or, for example, p.release().ptr() for someone who wants to manage
it themselves.
Glen