Boost logo

Boost :

Subject: Re: [boost] [Block Pointer] Update
From: Phil Bouchard (philippeb8_at_[hidden])
Date: 2016-03-13 22:19:22

On 03/13/2016 09:42 PM, Phil Bouchard wrote:
> On 03/13/2016 06:29 PM, Gavin Lambert wrote:
>> Also bear in mind that since people get into bad habits with passing
>> smart pointers by value instead of by reference, any such type has to be
>> slice-safe or you invite trouble. (ie. someone is going to construct a
>> block_root_ptr and then pass it by value as a block_ptr, possibly
>> destroying the original copy. In that second design, every single child
>> block_ptr will explode at that point.)
> I think you are right and I need to add a counter back to the proxy so
> that root_ptr<> (was block_ptr<>) can be r-values.

I just added support for r-values:

root_ptr<int> foo()
     return new node<int>(9);

int main()
     cout << "R-value:" << endl;
         cout << * foo() << endl;
     cout << endl;

What happens there is if you copy a root_ptr<> to another one then it
will transfer the contents of the internal intrusive list of node<>s to
the new root_ptr<>.

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