Задать вопрос
@Acaunt

Безопасно ли возвращать из функции с корутинами const_reference на локальную переменную в функции корутины?

Будет ли безопасным подобный код:

auto get_text() ->
std::generator<
    std::string_view
    // или
    // const std::string&
> {
    std::string buffer;
    for (size_t i = 0; i < 100; ++i) {
        // Очень сложное вычисление текста и запись его в буфер
        co_yield buffer;
    }
}

int main() {
    for (auto&& text : get_text()) {
        std::cout << text << std::endl;
    }
}
  • Вопрос задан
  • 96 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик на C++
    12 месяцев
    Далее
  • Академия Эдюсон
    Разработчик игр на Unreal Engine + ИИ
    9 месяцев
    Далее
  • Stepik
    Профессия: Разработчик C++ (Junior)
    2 месяца
    Далее
Решения вопроса 1
opium
@opium
Просто люблю качественно работать
безопасно — buffer в фрейме корутины на хипе, не на стеке. co_yield его не трогает. Только не таскай string_view за пределы тела цикла — при следующем resume UB.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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