boost::capy::awaitable_decomposes_to
Concept for awaitables whose return type decomposes to a specific typelist.
Synopsis
template<
typename A,
typename... Types>
concept awaitable_decomposes_to = requires {
typename detail::awaitable_return_t<A>;
} && decomposes_to<detail::awaitable_return_t<A>, Types...>;
Description
A type satisfies awaitable_decomposes_to if it is an awaitable (has await_resume) and its return type decomposes to the specified typelist.
Requirements
-
`A` must be an awaitable (directly or via `operator co_await`)
-
The return type of `await_resume()` must decompose to `Types...`
Example
// Constrain a function to accept only awaitables that return
// a decomposable result of (error_code, size_t)
template<typename A>
requires awaitable_decomposes_to<A, std::error_code, std::size_t>
task<void> process(A&& op)
{
auto [ec, n] = co_await std::forward<A>(op);
if (ec)
co_return;
// process n bytes...
}
Template Parameters
| Name | Description |
|---|---|
A |
The awaitable type. |
Types |
The expected element types after decomposition. |
Created with MrDocs