diff --git a/src/corelib/global/qtypeinfo.h b/src/corelib/global/qtypeinfo.h index 2b4f6ebab4c..1200c3b5a5f 100644 --- a/src/corelib/global/qtypeinfo.h +++ b/src/corelib/global/qtypeinfo.h @@ -194,6 +194,32 @@ Q_DECLARE_MOVABLE_CONTAINER(QSet); #undef Q_DECLARE_MOVABLE_CONTAINER +/* These cannot be movable before ### Qt 6, for BC reasons */ +#define Q_DECLARE_MOVABLE_CONTAINER(CONTAINER) \ +template class CONTAINER; \ +template \ +class QTypeInfo< CONTAINER > \ +{ \ +public: \ + enum { \ + isPointer = false, \ + isIntegral = false, \ + isComplex = true, \ + isStatic = (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)), \ + isRelocatable = true, \ + isLarge = (sizeof(CONTAINER) > sizeof(void*)), \ + isDummy = false, \ + sizeOf = sizeof(CONTAINER) \ + }; \ +} + +Q_DECLARE_MOVABLE_CONTAINER(QMap); +Q_DECLARE_MOVABLE_CONTAINER(QMultiMap); +Q_DECLARE_MOVABLE_CONTAINER(QHash); +Q_DECLARE_MOVABLE_CONTAINER(QMultiHash); + +#undef Q_DECLARE_MOVABLE_CONTAINER + /* Specialize a specific type with: