diff options
author | Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> | 2015-06-01 19:44:29 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> | 2015-06-01 19:44:29 +0200 |
commit | 6e008cd57955c8029671c4c92250b86767f8ec1f (patch) | |
tree | ad5fe258f7203a733fbdd231918acd540727a2fb /src/corelib/kernel | |
parent | 275709fb43c154ccb1d95391f4829bd1aecebb12 (diff) | |
parent | 6fba3c1904aa7601722a70099d88126191cf60cf (diff) |
Merge 5.5 into 5.5.0
Change-Id: I27921a25a0fc56afb5429e40fc1e9b4b9a645a9a
Diffstat (limited to 'src/corelib/kernel')
-rw-r--r-- | src/corelib/kernel/qmetatype.h | 14 | ||||
-rw-r--r-- | src/corelib/kernel/qobjectdefs.h | 1 |
2 files changed, 10 insertions, 5 deletions
diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index b854dc16fd..1b214e9f74 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -1357,12 +1357,16 @@ namespace QtPrivate enum { Value = sizeof(checkType(static_cast<T*>(0))) == sizeof(yes_type) }; }; + template<typename T, typename Enable = void> + struct IsGadgetHelper { enum { Value = false }; }; + template<typename T> - struct IsGadgetHelper + struct IsGadgetHelper<T, typename T::QtGadgetHelper> { - template<typename X> static typename X::QtGadgetHelper *checkType(X*); - static char checkType(void*); - enum { Value = sizeof(checkType(static_cast<T*>(0))) == sizeof(void*) }; + template <typename X> + static char checkType(void (X::*)()); + static void *checkType(void (T::*)()); + enum { Value = sizeof(checkType(&T::qt_check_for_QGADGET_macro)) == sizeof(void *) }; }; @@ -1769,7 +1773,7 @@ template <typename T> struct QMetaTypeIdQObject<T, QMetaType::IsGadget> { enum { - Defined = 1 + Defined = QtPrivate::is_default_constructible<T>::value }; static int qt_metatype_id() diff --git a/src/corelib/kernel/qobjectdefs.h b/src/corelib/kernel/qobjectdefs.h index 31e8a670e9..4d01264906 100644 --- a/src/corelib/kernel/qobjectdefs.h +++ b/src/corelib/kernel/qobjectdefs.h @@ -172,6 +172,7 @@ private: \ #define Q_GADGET \ public: \ static const QMetaObject staticMetaObject; \ + void qt_check_for_QGADGET_macro(); \ typedef void QtGadgetHelper; \ private: \ Q_DECL_HIDDEN_STATIC_METACALL static void qt_static_metacall(QObject *, QMetaObject::Call, int, void **); |