From 3087aa55dcccfe16ca05509113bd232633987d3b Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 28 Mar 2023 07:31:09 +0200 Subject: [PATCH] QResultStore: add emplaceResult() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ... use it in moveResult(). Task-number: QTBUG-112270 Change-Id: I1233a710801d73c9153439b74a7a3900d2d9e39d Reviewed-by: Fabian Kosmale Reviewed-by: MÃ¥rten Nordheim --- src/corelib/thread/qresultstore.h | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/corelib/thread/qresultstore.h b/src/corelib/thread/qresultstore.h index 083290f9b7..30ce1fe904 100644 --- a/src/corelib/thread/qresultstore.h +++ b/src/corelib/thread/qresultstore.h @@ -134,6 +134,14 @@ protected: } public: + template + int emplaceResult(int index, Args&&...args) + { + if (containsValidResultItem(index)) // reject if already present + return -1; + return addResult(index, static_cast(new T(std::forward(args)...))); + } + template int addResult(int index, const T *result) { @@ -151,10 +159,7 @@ public: { static_assert(!std::is_reference_v, "trying to move from an lvalue!"); - if (containsValidResultItem(index)) // reject if already present - return -1; - - return addResult(index, static_cast(new T(std::move(result)))); + return emplaceResult>(index, std::forward(result)); } template