diff options
author | Sona Kurazyan <[email protected]> | 2020-10-09 18:21:17 +0200 |
---|---|---|
committer | Sona Kurazyan <[email protected]> | 2020-10-30 17:19:26 +0100 |
commit | 4d9658b7cd2b072dd8b24d9bb6844b7cbcf22ad0 (patch) | |
tree | ab43ab1986e351468b3f099ee1b02752e4479f81 /src/concurrent/qtconcurrentreducekernel.h | |
parent | ff0ba7e2d7b91fd5809cb314935a1ca1a436f6c9 (diff) |
Use universal references for passing callables in QtConcurrent
Task-number: QTBUG-87596
Change-Id: I219f08d73b97317820ec6e329ab1e6c89c0545f1
Reviewed-by: Jarek Kobus <[email protected]>
Reviewed-by: Andrei Golubev <[email protected]>
Reviewed-by: MÃ¥rten Nordheim <[email protected]>
Diffstat (limited to 'src/concurrent/qtconcurrentreducekernel.h')
-rw-r--r-- | src/concurrent/qtconcurrentreducekernel.h | 34 |
1 files changed, 11 insertions, 23 deletions
diff --git a/src/concurrent/qtconcurrentreducekernel.h b/src/concurrent/qtconcurrentreducekernel.h index cdddfdde0d0..5ad8bded6cf 100644 --- a/src/concurrent/qtconcurrentreducekernel.h +++ b/src/concurrent/qtconcurrentreducekernel.h @@ -225,33 +225,21 @@ public: template <typename Sequence, typename Base, typename Functor1, typename Functor2> struct SequenceHolder2 : private QtPrivate::SequenceHolder<Sequence>, public Base { - SequenceHolder2(QThreadPool *pool, const Sequence &_sequence, Functor1 functor1, - Functor2 functor2, ReduceOptions reduceOptions) - : QtPrivate::SequenceHolder<Sequence>(_sequence), - Base(pool, this->sequence.cbegin(), this->sequence.cend(), functor1, functor2, - reduceOptions) - { } - - SequenceHolder2(QThreadPool *pool, Sequence &&_sequence, Functor1 functor1, Functor2 functor2, + template<typename S = Sequence, typename F1 = Functor1, typename F2 = Functor2> + SequenceHolder2(QThreadPool *pool, S &&_sequence, F1 &&functor1, F2 &&functor2, ReduceOptions reduceOptions) - : QtPrivate::SequenceHolder<Sequence>(std::move(_sequence)), - Base(pool, this->sequence.cbegin(), this->sequence.cend(), functor1, functor2, - reduceOptions) - { } - - template<typename InitialValueType> - SequenceHolder2(QThreadPool *pool, const Sequence &_sequence, Functor1 functor1, - Functor2 functor2, InitialValueType &&initialValue, ReduceOptions reduceOptions) - : QtPrivate::SequenceHolder<Sequence>(_sequence), - Base(pool, this->sequence.cbegin(), this->sequence.cend(), functor1, functor2, - std::forward<InitialValueType>(initialValue), reduceOptions) + : QtPrivate::SequenceHolder<Sequence>(std::forward<S>(_sequence)), + Base(pool, this->sequence.cbegin(), this->sequence.cend(), + std::forward<F1>(functor1), std::forward<F2>(functor2), reduceOptions) { } - template<typename InitialValueType> - SequenceHolder2(QThreadPool *pool, Sequence &&_sequence, Functor1 functor1, Functor2 functor2, + template<typename InitialValueType, typename S = Sequence, + typename F1 = Functor1, typename F2 = Functor2> + SequenceHolder2(QThreadPool *pool, S &&_sequence, F1 &&functor1, F2 &&functor2, InitialValueType &&initialValue, ReduceOptions reduceOptions) - : QtPrivate::SequenceHolder<Sequence>(std::move(_sequence)), - Base(pool, this->sequence.cbegin(), this->sequence.cend(), functor1, functor2, + : QtPrivate::SequenceHolder<Sequence>(std::forward<S>(_sequence)), + Base(pool, this->sequence.cbegin(), this->sequence.cend(), + std::forward<F1>(functor1), std::forward<F2>(functor2), std::forward<InitialValueType>(initialValue), reduceOptions) { } |