diff options
Diffstat (limited to 'src/concurrent/qtconcurrentreducekernel.h')
| -rw-r--r-- | src/concurrent/qtconcurrentreducekernel.h | 35 |
1 files changed, 14 insertions, 21 deletions
diff --git a/src/concurrent/qtconcurrentreducekernel.h b/src/concurrent/qtconcurrentreducekernel.h index 694ac2b5a9c..333d358f189 100644 --- a/src/concurrent/qtconcurrentreducekernel.h +++ b/src/concurrent/qtconcurrentreducekernel.h @@ -41,6 +41,7 @@ #define QTCONCURRENT_REDUCEKERNEL_H #include <QtConcurrent/qtconcurrent_global.h> +#include <QtConcurrent/qtconcurrentfunctionwrappers.h> #if !defined(QT_NO_CONCURRENT) || defined(Q_CLANG_QDOC) @@ -222,37 +223,29 @@ public: }; template <typename Sequence, typename Base, typename Functor1, typename Functor2> -struct SequenceHolder2 : public Base +struct SequenceHolder2 : private QtPrivate::SequenceHolder<Sequence>, public Base { - SequenceHolder2(QThreadPool *pool, - const Sequence &_sequence, - Functor1 functor1, - Functor2 functor2, - ReduceOptions reduceOptions) - : Base(pool, _sequence.begin(), _sequence.end(), functor1, functor2, reduceOptions), - sequence(_sequence) + 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) { } - template <typename InitialValueType> - SequenceHolder2(QThreadPool *pool, - const Sequence &_sequence, - Functor1 functor1, - Functor2 functor2, - InitialValueType &&initialValue, - ReduceOptions reduceOptions) - : Base(pool, _sequence.begin(), _sequence.end(), functor1, functor2, - std::forward<InitialValueType>(initialValue), reduceOptions), - sequence(_sequence) + 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) { } - Sequence sequence; - void finish() override { Base::finish(); // Clear the sequence to make sure all temporaries are destroyed // before finished is signaled. - sequence = Sequence(); + this->sequence = Sequence(); } }; |
