> Then you can detect the situation and initialise it to the right size on 
> first use.

Yep, just making sure that was the intended/required solution, and that I wasn't
missing something. If possible, it would be nice for the documentation to be 
updated to
point out that detail for both QtConcurrent::mappedReduced() and
QtConcurrent::filteredReduced().

At minimum, updating these examples would be helpful:
    https://doc.qt.io/qt-5/qtconcurrentmap.html#concurrent-map-reduce
    https://doc.qt.io/qt-5/qtconcurrentfilter.html#concurrent-filter-reduce

As pointed out, the mappedReduced() example wouldn't work as described without
realizing that you somehow need to initialize the QImage object somehow.
The filteredReduced() one looks like it would actually work as described, but 
it would
still be nice to point out to the reader that the first call to your reduce 
function will
get a default constructed T object, which may or may not be what works with
whatever underlying T type requires.

For first-time users of the QtConcurrent API (like myself), more pointers in the
documentation are always better!

> But no, this is a limitation in the API. If we take the prototypical example 
> of a
> reduction, std::accumulate, it does have an initial value:
> https://en.cppreference.com/w/cpp/algorithm/accumulate >

Is there any chance that in a future Qt release we could have additional 
versions
of mappedReduced() and filteredReduced() that allows the developer to pass in
a pre-intialized T& object? I haven't looked at the underlying Qt code for it, 
but
my assumption is the only risk of doing this is that the *reduced() functions 
couldn't
guarantee that I wasn't messing around with that same T& object in another 
thread,
at the time the reduce function are trying to use it. But I'd think providing 
the
functionality to pass one in, along with the documentation warning the 
developer that
they shouldn't attempt to access the T& they passed in until the *reduced() 
operation has
finished would be sufficient?

Sean
This e-mail, including any attached files, may contain confidential 
information, privileged information and/or trade secrets for the sole use of 
the intended recipient. Any review, use, distribution, or disclosure by others 
is strictly prohibited. If you are not the intended recipient (or authorized to 
receive information for the intended recipient), please contact the sender by 
reply e-mail and delete all copies of this message.
_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

Reply via email to