The asio::use_future
special value provides first-class support
for returning a C++11 std::future
from an asynchronous operation's
initiating function.
To use asio::use_future
, pass it to an asynchronous operation
instead of a normal completion handler. For example:
std::future<std::size_t> length = my_socket.async_read_some(my_buffer, asio::use_future);
Where a handler signature has the form:
void handler(asio::error_code ec, result_type result);
the initiating function returns a std::future
templated on
result_type
. In the above example, this is std::size_t
.
If the asynchronous operation fails, the error_code
is converted
into a system_error
exception and passed back to the caller
through the future.
Where a handler signature has the form:
void handler(asio::error_code ec);
the initiating function returns std::future<void>
. As
above, an error is passed back in the future as a system_error
exception.