...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
A completion token that creates another coro for the task completion.
template< typename Allocator = std::allocator<void>> struct use_coro_t
Name |
Description |
---|---|
The allocator type. The allocator is used when constructing the std::promise object for a given asynchronous operation. |
|
Adapts an executor to add the use_coro_t completion token as the default. |
Name |
Description |
---|---|
as_default_on [static] |
Function helper to adapt an I/O object to use use_coro_t as its default completion token type. |
Obtain allocator. |
|
Specify an alternate allocator. |
|
use_coro_t [constructor] |
Default constructor. |
The use_coro_t
class, with
its value use_coro
, is used
to represent an operation that can be awaited by the current resumable coroutine.
This completion token may be passed as a handler to an asynchronous operation.
For example:
coro<void> my_coroutine(tcp::socket my_socket) { std::size_t n = co_await my_socket.async_read_some(buffer, use_coro); ... }
When used with co_await, the initiating function (async_read_some
in the above example) suspends the current coroutine. The coroutine is resumed
when the asynchronous operation completes, and the result of the operation
is returned.
Note that this token is not the most efficient (use boost::asio::deferred
for that) but does provide type erasure, as it will always return a coro
.
Header: boost/asio/experimental/use_coro.hpp
Convenience header: None