diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index 30f31f54f60..5e53a970d42 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -1349,12 +1349,6 @@ struct QMetaTypeIdQObject } QT_END_NAMESPACE \ /**/ -template -int qRegisterMetatypeIndirection() -{ - return qRegisterNormalizedMetaType(QMetaType::fromType().name()); -} - #ifndef Q_MOC_RUN #define Q_DECLARE_METATYPE(TYPE) Q_DECLARE_METATYPE_IMPL(TYPE) #define Q_DECLARE_METATYPE_IMPL(TYPE) \ @@ -1368,11 +1362,12 @@ int qRegisterMetatypeIndirection() static QBasicAtomicInt metatype_id = Q_BASIC_ATOMIC_INITIALIZER(0); \ if (const int id = metatype_id.loadAcquire()) \ return id; \ - const auto mt = QMetaType::fromType(); \ - if (QByteArrayView(mt.name()) == (#TYPE)) { \ - qRegisterMetatypeIndirection(); \ - metatype_id.storeRelease(mt.id()); \ - return mt.id(); \ + constexpr auto arr = QtPrivate::typenameHelper(); \ + auto name = arr.data(); \ + if (QByteArrayView(name) == (#TYPE)) { \ + const int id = qRegisterNormalizedMetaType(name); \ + metatype_id.storeRelease(id); \ + return id; \ } \ const int newId = qRegisterMetaType< TYPE >(#TYPE); \ metatype_id.storeRelease(newId); \ @@ -1576,7 +1571,6 @@ QT_END_NAMESPACE QT_FOR_EACH_STATIC_TYPE(Q_DECLARE_BUILTIN_METATYPE) -Q_DECLARE_METATYPE(QtMetaTypePrivate::QPairVariantInterfaceImpl) QT_BEGIN_NAMESPACE @@ -2465,4 +2459,6 @@ constexpr const QtPrivate::QMetaTypeInterface *const qt_incomplete_metaTypeArray QT_END_NAMESPACE +Q_DECLARE_METATYPE(QtMetaTypePrivate::QPairVariantInterfaceImpl) + #endif // QMETATYPE_H