Boost logo

Boost :

Subject: Re: [boost] [cpo-proposal] presentation of the idea
From: Ben Pope (benpope81_at_[hidden])
Date: 2013-08-22 22:54:27

On 23/08/13 00:27, Larry Evans wrote:
> On 08/22/13 10:38, Thorsten Ottosen wrote:
> [snip]
>>> OTOH, if only offsets were used, then wouldn't simply using
>>> the vector<char>::swap work?
>> Doesn't that have the same problems as memcpy'ing? That is, if we don't
>> call the constructor, we don't get the implicit stuff inside the
>> classes properly constructed.
> OK. Maybe so. I was still under the impression that the only
> problem with simply copying the old std::vector<char>::data() to
> a new std::vector<char>::data() is that this could copy the
> raw pointers verbatim which would mean those raw pointers
> in the new std::vector<char>::data() would point somewhere
> still in the old std::vector<char>::data(), which would be
> invalid after the resize. OTOH, with offsets instead of
> raw pointers, the offsets would be w.r.t. the
> existing std::vector<char>::data(); hence, would still be
> valid since offsets would remain invariant.

But how can you be sure an arbitrary non-POD object in the vector
doesn't hold a pointer to itself?

Also, this problem has just been found in Folly fbvector:


Boost list run by bdawes at, gregod at, cpdaniel at, john at