For example, can it be used in Qt for the following?
gsl::owner<QWidget*> w{new QWidget{parent}}
In this example, the ownership is shared by the new-site and the parent
, because the code who has new
-ed the object can delete
w
, and W
's destructor will take itself out of parent
children list. However, if w
is not deleted at the new-site, then parent
will delete it in its destructor.
- Is this an example of shared ownership, and
- can
gsl::owner
be used for it?
No, you have two places claiming unique ownership.
If
w
can outlive the object pointed to byparent
, then it might become invalid, leading to undefined behaviour.If you want a pointer type that interfaces with Qt's parent-child ownership, use
QPointer