Details
-
Bug
-
Resolution: Done
-
P2: Important
-
None
-
6.0
-
None
-
8
-
Qt6_Foundation_Sprint 37, Qt6_Foundation_Sprint 38
Description
Whenever using an object with "operator()" as reductor, compilation fails with the error
error: no matching function for call to ‘blockingMappedReduced ....
First the error message is not helpful at all.
Second this should work.
Reproducer below.
void tst_QtConcurrentFilterMapGenerated::test1() { /* test for template<typename typename ResultType, typename Sequence, typename MapFunctor, typename ReduceFunctor> ResultType blockingMappedReduced(QThreadPool* pool, const Sequence & sequence, MapFunctor function, ReduceFunctor reduceFunction, ReduceOptions); with inputsequence=standard inputsequencepassing=lvalue inputitemtype=standard maptype=same mappeditemtype=standard reductiontype=same reductionitemtype=standard mapfunction=functor mapfunctionpassing=lvalue reductionfunction=functor reductionfunctionpassing=lvalue reductionoptions=unspecified */ QThreadPool pool; pool.setMaxThreadCount(1); auto input_sequence = []() { std::vector<SequenceItem<tag_input>> result; result.push_back(SequenceItem<tag_input>(1, true)); result.push_back(SequenceItem<tag_input>(2, true)); result.push_back(SequenceItem<tag_input>(3, true)); result.push_back(SequenceItem<tag_input>(4, true)); result.push_back(SequenceItem<tag_input>(5, true)); result.push_back(SequenceItem<tag_input>(6, true)); return result; }(); auto map = MyMap<SequenceItem<tag_input>, SequenceItem<tag_input>> {}; auto reductor = MyReduce<SequenceItem<tag_input>, SequenceItem<tag_input>> {}; auto result = QtConcurrent::blockingMappedReduced(&pool, input_sequence, map, reductor); auto expected_result = SequenceItem<tag_input>(42, true); QCOMPARE(result, expected_result); }
Attachments
For Gerrit Dashboard: QTBUG-88448 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
325857,1 | WIP: Allow reductor in qtconcurrent to be a two argument functor | dev | qt/qtbase | Status: ABANDONED | -2 | 0 |
359813,5 | Fix QtConcurrent to properly work with functors | dev | qt/qtbase | Status: MERGED | +2 | 0 |
361481,3 | Update QtConcurrent docs and examples for reductor object usage | dev | qt/qtbase | Status: MERGED | +2 | 0 |