Пространства имён
Варианты
Действия

std::coroutine_handle, std::noop_coroutine_handle

Материал из cppreference.com
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования (C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
Поддержка сопрограмм
Свойства сопрограмм
Дескриптор сопрограммы
Сопрограммы без операций
Тривиальные ожидания
Генераторы диапазонов
(C++23)
 
std::coroutine_handle
Функции-лементы
Преобразование
Наблюдатели
Контроль
Доступ к обещанию
Экспорт/импорт
Функции, не являющиеся элементами
(C++20)(C++20)
Вспомогательные классы
 
<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* на состояние сопрограммы.
(только для пояснения объект элемент*)

Функции-элементы

создаёт объект coroutine_handle
(public функция-элемент) [править]
(C++20)
присваивает объект coroutine_handle
(public функция-элемент) [править]
Преобразование
получает стёртый тип coroutine_handle
(public функция-элемент) [править]
Наблюдатели
(C++20)
проверяет, завершилась ли сопрограмма
(public функция-элемент) [править]
проверяет, представляет ли дескриптор сопрограмму
(public функция-элемент) [править]
Контроль