From 7d7e8ae3fa79b06c916de1a7a10eed63611c5d25 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Sat, 14 Sep 2013 13:18:15 +0200 Subject: Use Q_STATIC_ASSERT to report error about missing Q_OBJECT Q_STATIC_ASSERT gives better error with C++11 enabled. Aslo the qt_check_for_QOBJECT_macro had warning on some compiler since it used null reference Change-Id: Ic6115da800064b00c50a5762f0b79f5f656bf750 Reviewed-by: Thiago Macieira --- src/corelib/kernel/qobjectdefs.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/corelib/kernel/qobjectdefs.h') diff --git a/src/corelib/kernel/qobjectdefs.h b/src/corelib/kernel/qobjectdefs.h index dd10e70609..7354c3f0d0 100644 --- a/src/corelib/kernel/qobjectdefs.h +++ b/src/corelib/kernel/qobjectdefs.h @@ -480,6 +480,16 @@ public: inline const QMetaObject *QMetaObject::superClass() const { return d.superdata; } +namespace QtPrivate { + /* Trait that tells is a the Object has a Q_OBJECT macro */ + template struct HasQ_OBJECT_Macro { + template + static char test(int (T::*)(QMetaObject::Call, int, void **)); + static int test(int (Object::*)(QMetaObject::Call, int, void **)); + enum { Value = sizeof(test(&Object::qt_metacall)) == sizeof(int) }; + }; +} + QT_END_NAMESPACE #endif // QOBJECTDEFS_H -- cgit v1.2.3