From 106dc410e91cf5d9743c30427e2c428d679dfbf9 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Tue, 23 Apr 2013 10:42:35 +0200 Subject: Use variadic templates to mark function pointers as non-QObjects. Change-Id: I4d4e7a0498ff8f5b834dae4008d1311838180036 Reviewed-by: Olivier Goffart --- src/corelib/kernel/qmetatype.h | 5 +++++ tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index 4add02f805..c5eae7a83e 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -563,11 +563,16 @@ namespace QtPrivate { { return -1; } }; +#ifndef Q_COMPILER_VARIADIC_TEMPLATES // Function pointers don't derive from QObject template struct IsPointerToTypeDerivedFromQObject { enum { Value = false }; }; template struct IsPointerToTypeDerivedFromQObject { enum { Value = false }; }; template struct IsPointerToTypeDerivedFromQObject { enum { Value = false }; }; template struct IsPointerToTypeDerivedFromQObject { enum { Value = false }; }; +#else + template + struct IsPointerToTypeDerivedFromQObject { enum { Value = false }; }; +#endif template struct QMetaTypeTypeFlags diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp index f412ee2970..3e569814c9 100644 --- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp +++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp @@ -1825,11 +1825,15 @@ typedef Undefined (*UndefinedFunction0)(); typedef Undefined (*UndefinedFunction1)(Undefined); typedef Undefined (*UndefinedFunction2)(Undefined, Undefined); typedef Undefined (*UndefinedFunction3)(Undefined, Undefined, Undefined); +typedef Undefined (*UndefinedFunction4)(Undefined, Undefined, Undefined, Undefined, Undefined, Undefined, Undefined, Undefined); Q_DECLARE_METATYPE(UndefinedFunction0); Q_DECLARE_METATYPE(UndefinedFunction1); Q_DECLARE_METATYPE(UndefinedFunction2); Q_DECLARE_METATYPE(UndefinedFunction3); +#ifdef Q_COMPILER_VARIADIC_TEMPLATES +Q_DECLARE_METATYPE(UndefinedFunction4); +#endif QTEST_MAIN(tst_QMetaType) #include "tst_qmetatype.moc" -- cgit v1.2.3