summaryrefslogtreecommitdiffstats
path: root/src/concurrent/qtconcurrentreducekernel.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/concurrent/qtconcurrentreducekernel.h')
-rw-r--r--src/concurrent/qtconcurrentreducekernel.h35
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();
}
};