diff --git a/src/corelib/kernel/qobjectdefs_impl.h b/src/corelib/kernel/qobjectdefs_impl.h index f430749e474..4158851c057 100644 --- a/src/corelib/kernel/qobjectdefs_impl.h +++ b/src/corelib/kernel/qobjectdefs_impl.h @@ -15,6 +15,8 @@ QT_BEGIN_NAMESPACE class QObject; class QObjectPrivate; +class QMetaMethod; +class QByteArray; namespace QtPrivate { template struct RemoveRef { typedef T Type; }; @@ -339,7 +341,13 @@ namespace QtPrivate { not compatible with the \a ExpectedArguments, otherwise returns >= 0. */ template - constexpr int inline countMatchingArguments() + inline constexpr std::enable_if_t, + std::is_same, QMetaMethod>, + std::is_convertible, + std::is_same, QMetaMethod> + >, + int> + countMatchingArguments() { using ExpectedArguments = typename QtPrivate::FunctionPointer::Arguments; using Actual = std::decay_t; @@ -464,19 +472,21 @@ namespace QtPrivate { template struct ContextTypeForFunctor, - std::is_member_function_pointer>> - > + std::enable_if_t, + std::is_member_function_pointer + > + > > { using ContextType = QObject; }; template struct ContextTypeForFunctor>, + std::enable_if_t>, std::is_member_function_pointer, - std::is_convertible::Object *, QObject *>> - > + std::is_convertible::Object *, QObject *> + > + > > { using ContextType = typename QtPrivate::FunctionPointer::Object;