Details
-
Task
-
Resolution: Unresolved
-
P3: Somewhat important
-
None
-
6.4.0 Beta1
-
None
-
8
-
Foundation Sprint 122, Foundation Sprint 123, Foundation Sprint 124, Foundation Sprint 125, Foundation Sprint 126, Foundation Sprint 127, Foundation Sprint 128, Foundation Sprint 129, Foundation Sprint 130
Description
The QDom classes have user-defined copy Special Member Functions (SMFs) and a user-defined destructor, which disables the implicit generation of move SMFs. These types are therefore not movable, in particular, they're not nothrow_move_{constructible,assignable}, so they perform more poorly than they could in many situations, such as returning from functions and reallocation of containers.
Add move SMFs, possibly member-swap and free swap functions (by using Q_DECLARE_SHARED, if that's BC these days).
Acceptance criteria:
- All QDom value-like classes (incl. QDomNode hierarchy) have
- an inline noexcept move constructor
- an inline noexcept move-assignment operator
- just swaps, not move-and-swap
- an inline noexcept member-swap, if possible
- probably need a way to prevent mixed-type swapping
- see QPixmap/QBitmap for a technique
- likely move-assignment needs the same protection
- probably need a way to prevent mixed-type swapping
- are marked as Q_DECLARE_SHARED, if possible
- adding Q_D_S after release used to be BiC in Qt 5, check the situation in Qt 6, add Q_DECLARE_SHARED_NOT_RELOCATABLE_UNTIL_QT7 if Q_D_S is still a problem
Attachments
Issue Links
- is cloned by
-
QTBUG-109938 Missing move SMFs disable move semantics for QSql classes
-
- Closed
-
- relates to
-
QTBUG-134479 Qt XML Backlog Cleanup
-
- In Progress
-