From 2cd2789a400164a83eb9156d37d19e80d15605e4 Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer Date: Sun, 30 Apr 2023 00:41:40 +0200 Subject: [PATCH] Respect expected return type in QSlotObject helper When making asynchronous functions, then the return type is not ever going to be anything but void, but this makes this helper symmetrical with QObject::connect logic, where we can then use it to simplify the code. Change-Id: I9e1b8bfffb726bb3d6d7282c87e07dc7e9ede5d1 Reviewed-by: Thiago Macieira --- src/corelib/kernel/qobjectdefs_impl.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/corelib/kernel/qobjectdefs_impl.h b/src/corelib/kernel/qobjectdefs_impl.h index 4158851c057..e8e33f2c1cc 100644 --- a/src/corelib/kernel/qobjectdefs_impl.h +++ b/src/corelib/kernel/qobjectdefs_impl.h @@ -504,6 +504,7 @@ namespace QtPrivate { makeSlotObject(Functor func) { using ExpectedSignature = QtPrivate::FunctionPointer; + using ExpectedReturnType = typename ExpectedSignature::ReturnType; using ExpectedArguments = typename ExpectedSignature::Arguments; using ActualSignature = QtPrivate::FunctionPointer; @@ -512,12 +513,11 @@ namespace QtPrivate { if constexpr (QtPrivate::FunctionPointer::IsPointerToMemberFunction) { using ActualArguments = typename ActualSignature::Arguments; - return new QtPrivate::QSlotObject(std::move(func)); + return new QtPrivate::QSlotObject(std::move(func)); } else { constexpr int MatchingArgumentCount = QtPrivate::countMatchingArguments(); using ActualArguments = typename QtPrivate::List_Left::Value; - - return new QtPrivate::QFunctorSlotObject(std::move(func)); + return new QtPrivate::QFunctorSlotObject(std::move(func)); } }