Le 30/05/15 22:49, Peter Dimov a écrit :
Vicente J. Botet Escriba wrote:
Surely for catch_error() one must always return the same type of future >> as the input? Otherwise it couldn't work when f1 has a value.
Vicente in N4048 says that it's not required to return the same type.
If I said that it was an error. Could you point me where?
Input Parameters: • Lambda function: The lambda function on map()/bind() takes a future<t>::value_type. The lambda function on catch_error() takes an exception_ptr. Both could return whatever type. This makes propagating exceptions straightforward. This approach also simplifies the chaining of continuations.
Thanks. I suspect I was referring to map and bind. future<T>::cath_error must return T or future<T>. I recognize that it is not clear in the N4048. Initially catch_error() was called recover(). It can be used to recover from errors and then the function returns a value or a future ready with a value and also to change the reported error, in this case the function should return future<T> ready with an exception. Vicente