On Thursday, 8 August 2019 11:33:04 CEST Philippe wrote: > > No. When you call detach(), you're in a mutating function of the object > > and you can assume that you're the only thread executing on a member > > function of that thread, because if that's not the case, you're in UB > > land. Only const methods are allowed to execute concurrently on the same > > object. Mutators must get exclusive access. > > Absolutly right, but a method "isDetached()" which is const > has no usefulness on its own, independently from a detach() procedure. > This is the purpose of my orginal remark. > It has uses when combined with move-like semantics, when it is detached it makes sense to perform in-place transforms on the "shared" data, but it if isn't that would trigger two iterations over the data, first the detach triggering a copy, and then the iteration over the data transforming it. If it is shared, you can just iterate over the data read-only putting the result into a new object. This is used many places with QImage.
Note though that QImage has a second use of isDetached() since QImage detach() also copies user provided data even when not shared. 'Allan _______________________________________________ Development mailing list [email protected] https://lists.qt-project.org/listinfo/development
