summaryrefslogtreecommitdiffstats
path: root/src/corelib/thread/qpromise.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/thread/qpromise.h')
-rw-r--r--src/corelib/thread/qpromise.h16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/corelib/thread/qpromise.h b/src/corelib/thread/qpromise.h
index 5620811bae..c2b6c119ae 100644
--- a/src/corelib/thread/qpromise.h
+++ b/src/corelib/thread/qpromise.h
@@ -46,11 +46,23 @@ public:
// Core QPromise APIs
QFuture<T> future() const { return d.future(); }
- template<typename U, typename = QtPrivate::EnableIfSameOrConvertible<U, T>>
+ template<typename...Args, std::enable_if_t<std::is_constructible_v<T, Args...>, bool> = true>
+ bool emplaceResultAt(int index, Args&&...args)
+ {
+ return d.reportAndEmplaceResult(index, std::forward<Args>(args)...);
+ }
+ template<typename...Args, std::enable_if_t<std::is_constructible_v<T, Args...>, bool> = true>
+ bool emplaceResult(Args&&...args)
+ {
+ return d.reportAndEmplaceResult(-1, std::forward<Args>(args)...);
+ }
+ template<typename U = T, typename = QtPrivate::EnableIfSameOrConvertible<U, T>>
bool addResult(U &&result, int index = -1)
{
- return d.reportResult(std::forward<U>(result), index);
+ return d.reportAndEmplaceResult(index, std::forward<U>(result));
}
+ bool addResults(const QList<T> &result)
+ { return d.reportResults(result); }
#ifndef QT_NO_EXCEPTIONS
void setException(const QException &e) { d.reportException(e); }
#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)