- Chuck
Chuck Messenger wrote:
Suppose you have this:
struct X { shared_ptr<Y> y; ... };
struct Y { X x; .... };
struct Z { Z() : pimpl_(new Y()) { pimpl_->x.y = pimpl_; } shared_ptr<Y> pimpl_; ... };
I'm using the "pimpl" idiom. When I create Z, I create an embedded Y ("y"), setting y's x so that it points to y.
The problem is that Y will now never die. What I'd like to do is to decrement the reference count in x, when I construct the Y:
Z() : pimpl_(new Y()) { pimpl_->x.y = pimpl_; pimpl_.decrement_reference_count(); }
This is perfectly sound -- it decrements the reference count from 2 to 1. It says, basically, "the mother structure contains a self-referring pointer. If that's the only one left, then kill the mother structure."
Why do I want to do all this? Well, I could get into the very sound reasons if anyone is interested. It is a technique for avoiding circular shared_ptr references.
- Chuck Messenger
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost