|
Nugget
|
The awaiter type for coroutine-to-coroutine chaining via co_await. More...
#include <psyqo/coroutine.hh>
Public Member Functions | |
| ChainAwaiter (std::coroutine_handle< Promise > h) | |
| ~ChainAwaiter () | |
| ChainAwaiter (ChainAwaiter &&other) | |
| ChainAwaiter & | operator= (ChainAwaiter &&)=delete |
| ChainAwaiter (const ChainAwaiter &)=delete | |
| ChainAwaiter & | operator= (const ChainAwaiter &)=delete |
| constexpr bool | await_ready () |
| void | await_suspend (std::coroutine_handle<> h) |
| constexpr T | await_resume () |
Public Attributes | |
| std::coroutine_handle< Promise > | handle |
The awaiter type for coroutine-to-coroutine chaining via co_await.
GCC has known bugs across versions 10-15+ where the awaitable temporary in a co_await expression is not correctly promoted to the coroutine frame. By using operator co_await(), we transfer the coroutine handle to this awaiter object that GCC's coroutine pass reliably stores in the frame.
|
inlineexplicit |
|
inline |
|
inline |
|
delete |
|
inlineconstexpr |
|
inlineconstexpr |
|
inline |
|
delete |
|
delete |
| std::coroutine_handle<Promise> psyqo::Coroutine< T >::ChainAwaiter::handle |