"Hello";
}
Итак, есть ли бага в коде?
По идее строка живёт внутри корутины и если корутину не убили, то и строка должна жить. А вот что с co_return?
co_return вроде бы не обязателен, если есть другие co_ операторы
Я про то, что что будет заменив co_yield на co_return. Хотя в принципе тоже самое.
Ага, всё верно std::string должен жить в корутине до возвращения из co_yield
Т.е вернув co_yield'ом lvalue все бы было ок?
Ну там yield возвращает awaiter, который передается в co_yield. И там оно разворачивается в co_await promise.yield(value)
Я про немного другой кейс, но похоже: MyGenerator<std::string> f() { std::string str; while (true) { str = co_yield (str + "a"); // use yielded value } }
Ну по факту да,это выражение
Почему нельзя? co_yield - это враппер над co_await. Более того, результат выражения co_yield может иметь тип отличный от void.
Это же от awaitera зависит,а именно от await_resume
А где там пишут что возвращает co_yield
Обсуждают сегодня