std::coroutine_handle, std::noop_coroutine_handle
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <coroutine>
|
||
template< class Promise = void > struct coroutine_handle; |
(1) | (начиная с C++20) |
template<> struct coroutine_handle<void>; |
(2) | (начиная с C++20) |
template<> struct coroutine_handle<std::noop_coroutine_promise>; |
(3) | (начиная с C++20) |
using noop_coroutine_handle = std::coroutine_handle<std::noop_coroutine_promise>; |
(4) | (начиная с C++20) |
Шаблон класса coroutine_handle можно использовать для ссылки на приостановленную или выполняющуюся сопрограмму. Каждая специализация coroutine_handle представляет собой LiteralType.
1) Первичный шаблон может быть создан из объекта обещания типа
Promise.2) Специализация
std::coroutine_handle<void> стирает тип обещания. Он конвертируется из других специализаций.3) Специализация
std::coroutine_handle<std::noop_coroutine_promise> относится к неактивным сопрограммам. Её нельзя создать из объекта обещания.В типичных реализациях каждая специализация std::coroutine_handle является TriviallyCopyable.
Поведение программы, добавляющей специализации для std::coroutine_handle не определено.
Элементы данных
| Имя элемента | Определение |
ptr (private)
|
Указатель void* на состояние сопрограммы.(только для пояснения объект элемент*) |
Функции-элементы
(C++20) |
создаёт объект coroutine_handle (public функция-элемент) |
(C++20) |
присваивает объект coroutine_handle (public функция-элемент) |
Преобразование | |
(C++20) |
получает стёртый тип coroutine_handle (public функция-элемент) |
Наблюдатели | |
(C++20) |
проверяет, завершилась ли сопрограмма (public функция-элемент) |
(C++20) |
проверяет, представляет ли дескриптор сопрограмму (public функция-элемент) |
Контроль | |