Boost logo

Boost :

Subject: Re: [boost] storing intrusive_ptr in atomic?!
From: Giovanni Piero Deretta (gpderetta_at_[hidden])
Date: 2013-10-25 07:04:34

On Fri, Oct 25, 2013 at 11:48 AM, Oliver Kowalke

> 2013/10/25 Giovanni Piero Deretta <gpderetta_at_[hidden]>
> I'm referring to standard doc at
> Section 3.9. Types -> the example code works for intrusive_ptr too.

Well, no, the point is that it won't:

char buf[N];
T obj;
std::memcpy(buf, &obj, N);
std::memcpy(&obj, buf, N);

For T = boost::intrusive_ptr<T2>, the above code formally leads to UB, as
intrusive_ptr is not trivially copiable.

It might (or not) work in practice, but in the case of std::atomic, it will
bypass the copy constructor which means that the reference count won't be

-- gpd

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