Программы на C++. Форум разработчиков
Anonymous
Поддерживает ли полиморфные обещания coroutine_handle?
Сообщение
Anonymous » 05 фев 2025, 10:58
Я специально ссылаюсь на метод 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
1738742294
Anonymous
Я специально ссылаюсь на метод from_promise. Ведут ли эта функция правильств : < /p> [code]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(); } [/code] Гарантированно ли эта программа будет работать так же, как и ожидалось, или доступ через Coroutine_handle, потенциальная ошибка/ub? Подробнее здесь: [url]https://stackoverflow.com/questions/79406327/does-coroutine-handle-support-polymorphic-promises[/url]