From f8dba0395f6024d5d6a7b3112b9970693cb55dfd Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Fri, 24 Mar 2023 08:44:53 +0100 Subject: [PATCH] QPromise: add support for addResult(braced-initializer) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The usual problem, the usual fix: default the addResult() template argument to the class template argument, cf. e.g. wg21.link/p2218. [ChangeLog][QtCore][QPromise] Added support for calls to addResult() with braced initializers. Fixes: QTBUG-111826 Change-Id: I9ad7294dbcefbc5d2609ca3d9e7304dbeb8b3f41 Reviewed-by: Fabian Kosmale Reviewed-by: MÃ¥rten Nordheim --- src/corelib/thread/qpromise.h | 2 +- .../auto/corelib/thread/qpromise/tst_qpromise.cpp | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/corelib/thread/qpromise.h b/src/corelib/thread/qpromise.h index 9be9526ef6..9db58ad595 100644 --- a/src/corelib/thread/qpromise.h +++ b/src/corelib/thread/qpromise.h @@ -46,7 +46,7 @@ public: // Core QPromise APIs QFuture future() const { return d.future(); } - template> + template> bool addResult(U &&result, int index = -1) { return d.reportResult(std::forward(result), index); diff --git a/tests/auto/corelib/thread/qpromise/tst_qpromise.cpp b/tests/auto/corelib/thread/qpromise/tst_qpromise.cpp index 6c23884b36..09332f92ef 100644 --- a/tests/auto/corelib/thread/qpromise/tst_qpromise.cpp +++ b/tests/auto/corelib/thread/qpromise/tst_qpromise.cpp @@ -24,6 +24,7 @@ private slots: void promise(); void futureFromPromise(); void addResult(); + void addResultWithBracedInitializer(); void addResultOutOfOrder(); #ifndef QT_NO_EXCEPTIONS void setException(); @@ -196,6 +197,20 @@ void tst_QPromise::addResult() } } +void tst_QPromise::addResultWithBracedInitializer() // QTBUG-111826 +{ + struct MyClass + { + QString strValue; + int intValue = 0; + }; + + { + QPromise myPromise; + myPromise.addResult({"bar", 1}); + } +} + void tst_QPromise::addResultOutOfOrder() { // Compare results available in QFuture to expected results