https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106390
Benjamin Priour <vultkayn at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |vultkayn at gcc dot gnu.org --- Comment #3 from Benjamin Priour <vultkayn at gcc dot gnu.org> --- I think gsl::owner might be insufficient and we should rather introduce [[gnu::owner(unique)]] and [[gnu::owner(shared)]] Let's say we only had [[gnu::owner]] for ownership, whether unique or shared. If so, annotating [[gnu::owner]] would mean "I am becoming A (not THE) owner of the given resource", i.e. it would always mean "shared" ownership. Yet doing so would make the attribute only useful to check spurious deallocations of non-owned resource, as well as detect the resource has been released in the destructor, but otherwise useless to check move operations, as we cannot require a move upon acquiring a shared resource. Thus an additional attribute will be necessary anyway, either to differentiate "shared" and "unique" ownership, or to annotate a move operation. I believe [[gnu::owner(unique|shared)]] to be preferable, as we can use it to deduce a move operation, whereas a flagged move does not induce the quality of ownership.