
Martin Wille wrote:
future<int> f3 = f1 || f2;
We'll probably need more than operator ||.
E.g. consider f1 and f2 implement operations that consume time and may fail, e.g.:
future<whatever> x = query_google_and_check_links_returned || dig_in_local_incomplete_archive;
The local archive is faster than searching something over the internet, but the search may fail. Having an or-operation that waits for the first function to return a *success* would be useful.
Interesting idea! Could we signal that by requesting the function to throw a special exception?
In another reply, thread-cancellation was mentioned. We don't have thread-cancellation currently, but it would be nice if future<> would not only accept functors but also allow for an optional interface to be passed for signaling an abort request. A user would then be able to implement a mechanism that works form her/him. Maybe, an abort policy would be the right thing here.
That is possible but requires a special functor interface. Will have to think about this. Regards Hartmut