Skip to main content
Pigweed's logo Pigweed
code_xml
  1. Home
  2. Reference
  3. C/C++
  4. pw_async2
  5. Coroutines
Loading...
Searching...
No Matches
Coroutines

Overview

C++20 coroutine support.

Learn more: Coroutines

Classes

class  pw::async2::CoroContext
 Context required for creating and executing coroutines. More...
 
class  pw::async2::Coro< T >
 
class  pw::async2::FallibleCoro< T, Handler >
 
class  pw::async2::Generator< T >
 

Typedefs

template<typename T , ReturnValuePolicy kPolicy = ReturnValuePolicy::kDiscard>
using pw::async2::CoroTask = FutureTask< Coro< T >, kPolicy >
 
template<typename T , typename Handler = Function<void()>, ReturnValuePolicy kPolicy = ReturnValuePolicy::kDiscard>
using pw::async2::FallibleCoroTask = FutureTask< FallibleCoro< T, Handler >, kPolicy >
 

Functions

template<typename Promise >
 pw::async2::Coro (internal::OwningCoroutineHandle< Promise > &&) -> Coro< typename Promise::value_type >
 
template<typename T , typename Handler = internal::NoOpAllocFailureHandler>
 pw::async2::FallibleCoro (Coro< T > &&, Handler &&={}) -> FallibleCoro< T, std::decay_t< Handler > >
 
template<typename T , typename Handler >
 pw::async2::FutureTask (Coro< T > &&, Handler &&) -> FutureTask< FallibleCoro< T, std::decay_t< Handler > > >
 
template<typename Handler >
requires (!Future<std::decay_t<Handler>> && std::invocable<std::decay_t<Handler>> && !std::is_void_v<std::invoke_result_t<std::decay_t<Handler>>>)
 pw::async2::FutureTask (Handler &&) -> FutureTask< FallibleCoro< std::invoke_result_t< std::decay_t< Handler > >, std::decay_t< Handler > > >
 

Typedef Documentation

◆ CoroTask

template<typename T , ReturnValuePolicy kPolicy = ReturnValuePolicy::kDiscard>
using pw::async2::CoroTask = typedef FutureTask<Coro<T>, kPolicy>

A Task that runs a Coro<T> to completion and discards its return value by default.

CoroTask is an alias of FutureTask<Coro<T>, kPolicy>. Pass ReturnValuePolicy::kKeep (or use FutureTask<Coro<T>> directly) to store the coroutine's return value for use with Wait() or value().

Crashes if coroutine frame allocation fails. Use FallibleCoroTask to handle allocation failures gracefully.

◆ FallibleCoroTask

template<typename T , typename Handler = Function<void()>, ReturnValuePolicy kPolicy = ReturnValuePolicy::kDiscard>
using pw::async2::FallibleCoroTask = typedef FutureTask<FallibleCoro<T, Handler>, kPolicy>

A Task that runs a Coro<T> to completion, discards its return value by default, and invokes a handler if coroutine allocation fails.

FallibleCoroTask is an alias of FutureTask<FallibleCoro<T, Handler>, kPolicy>. Pass ReturnValuePolicy::kKeep (or use FutureTask<FallibleCoro<T, Handler>> directly) to store the coroutine's return value.