Специальное значение<boost::asio::use_future
>обеспечивает первоклассную поддержку возврата C++11<std::future
>из инициирующей функции асинхронной операции.
Чтобы использовать<boost::asio::use_future
>, передайте его на асинхронную операцию вместо обычного обработчика завершения. Например:
std::future<std::size_t> length =
my_socket.async_read_some(my_buffer, boost::asio::use_future);
Если подпись обработчика имеет форму:
void handler(boost::system::error_code ec, result_type result);
Инициирующая функция возвращает<std::future
>шаблон на<result_type
>. В приведенном выше примере это<std::size_t
>. Если асинхронная операция не срабатывает,<error_code
>преобразуется в<system_error
>исключение и передается обратно абоненту через будущее.
Если подпись обработчика имеет форму:
void handler(boost::system::error_code ec);
Инициирующая функция возвращается<std::future<void>
>. Как уже было сказано выше, в будущем в качестве исключения передается ошибка<system_error
>.
use_future,use_future_t,Futures example (C++11).