Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Улучшение для final_suspend #536

Open
MBkkt opened this issue Aug 31, 2022 · 0 comments
Open

Улучшение для final_suspend #536

MBkkt opened this issue Aug 31, 2022 · 0 comments

Comments

@MBkkt
Copy link

MBkkt commented Aug 31, 2022

В идеальном мире return_value/void и final_suspend это одна функция.

На текущий момент времени этого уже сделать нельзя, к тому же возможно имеются сложности в реализации этого на уровне компилятора (из-за эксепшенов).

Поэтому предлагается позволить писать:

template <typename T>
auto final_suspend();

А компилятор вызовет final_suspend с типом параметра вызванного return_value.
Тогда в final_suspend мы можем понять, какая из перегрузок return_value была выбрана.

YACLib/YACLib#189

Я столкнулся с тем, что хочу возвращать разные типы в final_suspend.
Для того чтобы реализовать "future unwrapping", иначе говоря вернуть асинхронной задачу из асинхронной задачи без ожидания (пусть и неблокирующего)

Понятно что это не что-то критичное, но почему нет?
К тому же я думаю со временем примеров станет больше.
По сути сюда подходит любое поведение, которое отличается в зависимости от возвращаемого типа.
Например возможны оптимизации на не хранение того что у нас есть отмена.
Или запуск ленивой задачи при возврате из асинхронной.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant