Поддерживает ли полиморфные обещания coroutine_handle?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Поддерживает ли полиморфные обещания coroutine_handle?

Сообщение Anonymous »

Я специально ссылаюсь на метод from_promise. Ведут ли эта функция правильств : < /p>

Код: Выделить всё

struct Foo
{
/* ... */
};

struct GenericPromise
{
std::suspend_always initial_suspend() noexcept { return {}; }
std::suspend_always final_suspend() noexcept { return {}; }
void return_void() {}
void unhandled_exception() {}
virtual ~GenericPromise() = default;
};

struct Coroutine
{
std::coroutine_handle handle;
struct promise_type : Foo, GenericPromise
{
Coroutine get_return_object()
{
return { std::coroutine_handle::from_promise(*this) };
}

int AdditionalData = 42;
};
};

Coroutine Coro()
{
co_return;
}

int main(int argc, char* argv[])
{
Coroutine coro = Coro();

coro.handle.resume();
assert(coro.handle.done());
coro.handle.destroy();
}
Гарантированно ли эта программа будет работать так же, как и ожидалось, или доступ через Coroutine_handle, потенциальная ошибка/ub?


Подробнее здесь: https://stackoverflow.com/questions/794 ... c-promises
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»