In the Qt Docs, at the bottom of QFutureWatcher's Detailed
Description section there's this statement:
  Any QFuture<T> can be watched by a QFutureWatcher<void> as
  well. This is useful if only status or progress information
  is needed; not the actual result data.

That statement fits what I'm trying to do - I only need the
status/progress information. So I attempt the lines:
  QFutureWatcher<void> watcher;
  watcher.setFuture(QtConcurrent::mappedReduced(list, mapped, reduce));

This fails to compile with the error message:
  No viable conversion from 'QFuture<int>' to 'const QFuture<void>'
Where my mapped() function has the form
  U function(const T &t);
And my reduce() function has the form
  void function(int &result, const U &intermediate)

If I explicitly cast the mappedReduced() return value to a QFuture<void>:
  watcher.setFuture(static_cast<QFuture<void>>(
             QtConcurrent::mappedReduced(list, mapped, reduce)));

It compiles and seems to run fine, but I just wanted to double
check this was intended behavior, or if there was a better way
to do it? From the line in the docs, I assumed that the original
assignment was fine and I wouldn't need to explicitly cast.

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