170 похожих чатов

@Igor_akhmetov Andrey Игорь, Андрей, привет! Препарирую coroutines ts в текущей

реализации MSVC (Visual Studio Community 2019 16.5.5), у меня по логу фуннция-член initial_suspend промиса вызывается раньше, чем его конструктор:
[thrid][this ]message
-------------------------------------------------------------------------------------------------------------
[26788][01335708]auto __thiscall coreturn::result_type<int>::promise_type::initial_suspend(void) entered ???
[26788][01335708]auto __thiscall coreturn::result_type<int>::promise_type::initial_suspend(void) leaved
[26788][0133573C]__thiscall tracer::tracer(struct tracer &&) noexcept entered
[26788][0133573C]__thiscall tracer::tracer(struct tracer &&) noexcept leaved
[26788][01335708]__thiscall coreturn::result_type<int>::promise_type::promise_type(void) entered ???
[26788][01335708]__thiscall coreturn::result_type<int>::promise_type::promise_type(void) leaved
код простой:
template<typename T>
struct result_type
{
struct promise_type;
using coroutine_handle = std::experimental::coroutine_handle<promise_type>;

result_type(coroutine_handle handle) : handle {handle}
{
scope_tracer _{ __FUNCSIG__, this};
}
result_type(result_type const&)
{
scope_tracer _{ __FUNCSIG__, this };
}
~result_type()
{
scope_tracer _{ __FUNCSIG__, this };
}
T get() {
scope_tracer _{ __FUNCSIG__, this };
return handle.promise().value;;
}
struct promise_type {
T value;
promise_type() : value{ } {
scope_tracer _{ __FUNCSIG__, this };
}
promise_type(tracer param) : value{ } {
scope_tracer _{ __FUNCSIG__, this };
}
~promise_type() {
scope_tracer _{ __FUNCSIG__, this };
}
auto get_return_object() {
scope_tracer _{ __FUNCSIG__, this };
return result_type<T>{coroutine_handle::from_promise(*this)};
}
auto initial_suspend() {
scope_tracer _{ __FUNCSIG__, this };
return co_suspend_never{};
}
auto return_value(T v) {
scope_tracer _{ __FUNCSIG__, this };
logger::info("return value is ", value = v);
return co_suspend_never{};
}
auto final_suspend() noexcept {
scope_tracer _{ __FUNCSIG__, this };
return co_suspend_never{};
}
void unhandled_exception() {
scope_tracer _{ __FUNCSIG__, this };
std::terminate();
}
};
coroutine_handle handle;
};

result_type<int> co_return_func(tracer param)
{
scope_tracer _(__FUNCSIG__);
logger::info("co_return: 42");
co_return 42;
}


это как-то можно объяснить?

И вопрос по поводу вызова конструктора promise_type. Если конструктор промиса принимает аргументы функции, то ведь он должен быть вызван, а не дефолтный:
promise_type(tracer param) : value{ } {
scope_tracer _{ __FUNCSIG__, this };
}
а MSVC требует default constructor.

2 ответов

4 просмотра

другие компилеры не пробовал?

Как повторить? На таком коде https://gcc.godbolt.org/z/mkqMap 16.6 сначала вызывает конструктор.

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
А кто-нибудь запихивал сборку перловых модулей/образов с perl приложениями в окружения без интернета (в специализированном CI/CD)? У меня сейчас есть ряд cpanfile, которые н...
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
14
Карта сайта