diff options
author | Sona Kurazyan <sona.kurazyan@qt.io> | 2020-11-29 20:46:02 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2020-12-01 08:12:09 +0000 |
commit | bc46c7b8ea40c64ad909769ce9f37381013598dd (patch) | |
tree | f359616e0ef43909d2fc0cd0b7ed0371ffd2160f /src/corelib/thread/qfuture.h | |
parent | a9ba5fe7aad1fd47828eec3202f8f91d1d8e55e2 (diff) |
Fix perfect forwarding of callables in QFuture's continuations
Use universal references instead of rvalue references for passing
callables in the implementations of QFuture's continuations.
Change-Id: I1288c78f78f84f30c6607e505e7f9807a9272071
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
(cherry picked from commit b002722dabef794da0e80010b115b2c6cd6dc6b8)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src/corelib/thread/qfuture.h')
-rw-r--r-- | src/corelib/thread/qfuture.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/corelib/thread/qfuture.h b/src/corelib/thread/qfuture.h index 44c5331261..101bdc7808 100644 --- a/src/corelib/thread/qfuture.h +++ b/src/corelib/thread/qfuture.h @@ -347,7 +347,7 @@ QFuture<typename QFuture<T>::template ResultType<Function>> QFuture<T>::then(QtFuture::Launch policy, Function &&function) { QFutureInterface<ResultType<Function>> promise(QFutureInterfaceBase::State::Pending); - QtPrivate::Continuation<Function, ResultType<Function>, T>::create( + QtPrivate::Continuation<std::decay_t<Function>, ResultType<Function>, T>::create( std::forward<Function>(function), this, promise, policy); return promise.future(); } @@ -358,7 +358,7 @@ QFuture<typename QFuture<T>::template ResultType<Function>> QFuture<T>::then(QTh Function &&function) { QFutureInterface<ResultType<Function>> promise(QFutureInterfaceBase::State::Pending); - QtPrivate::Continuation<Function, ResultType<Function>, T>::create( + QtPrivate::Continuation<std::decay_t<Function>, ResultType<Function>, T>::create( std::forward<Function>(function), this, promise, pool); return promise.future(); } @@ -370,7 +370,8 @@ template<class Function, typename> QFuture<T> QFuture<T>::onFailed(Function &&handler) { QFutureInterface<T> promise(QFutureInterfaceBase::State::Pending); - QtPrivate::FailureHandler<Function, T>::create(std::forward<Function>(handler), this, promise); + QtPrivate::FailureHandler<std::decay_t<Function>, T>::create(std::forward<Function>(handler), + this, promise); return promise.future(); } @@ -381,7 +382,8 @@ template<class Function, typename> QFuture<T> QFuture<T>::onCanceled(Function &&handler) { QFutureInterface<T> promise(QFutureInterfaceBase::State::Pending); - QtPrivate::CanceledHandler<Function, T>::create(std::forward<Function>(handler), this, promise); + QtPrivate::CanceledHandler<std::decay_t<Function>, T>::create(std::forward<Function>(handler), + this, promise); return promise.future(); } |