eb87bd715d
Compare API dox of Q_DECLARE_METATYPE: " Some types are registered automatically and do not need this macro: * Pointers to classes derived from QObject * QPointer<T>, QSharedPointer<T>, QWeakPointer<T>, where T is a class that derives from QObject " This is a ABI-compatible change, as this just replaces explicitly defined template code (by the Q_DECLARE_METATYPE macro use) with the generic predefined one picking up pointers to QObject subclasses. So instead of the custom explicitly template overload template <> struct QMetaTypeId< TYPE > { /**/ static int qt_metatype_id() {/**/} }; the predefined template overload one is picked up via template <typename T> struct QMetaTypeId : public QMetaTypeIdQObject<T> { /**/ }; template <typename T, int = QtPrivate::IsPointerToTypeDerivedFromQObject<T>::Value ? QMetaType::PointerToQObject : /**/ 0> struct QMetaTypeIdQObject { /**/ }; template <typename T> struct QMetaTypeIdQObject<T*, QMetaType::PointerToQObject> { /**/ static int qt_metatype_id() {/**/} }; And thus the constexpr code using QMetaTypeId<T>::qt_metatype_id(), for which all this is done, evaluates as before. GIT_SILENT |
||
---|---|---|
.. | ||
python | ||
qml | ||
ruby | ||
CMakeLists.txt |