Что я использую в C ++ вместо ienumerable для возврата типа функции CO_YIELD?C++

Программы на C++. Форум разработчиков
Anonymous
Что я использую в C ++ вместо ienumerable для возврата типа функции CO_YIELD?

Сообщение Anonymous »

В C#я могу написать следующий код: < /p>

Код: Выделить всё

IEnumerable evenUpTo(int max)
{
for (int i = 0; i < max; i += 2)
{
yield return i;
}
}

foreach(int e in evenUpTo(11))
{
Console.WriteLine(e);
}
И компилятор будет генерировать для меня класс, который удовлетворяет Ienumerable интерфейс. В принципе, код выглядит очень похожим: < /p>

Код: Выделить всё

#include 
#include 

??? evenUpTo(int max) {
for (int i = 0; i < max; i += 2) {
co_yield i;
}
}

int main() {
for (auto e : evenUpTo(11)) {
std::print("{0}\n", e);
}
}
Что мне поместить в качестве типа возврата ??? ? Пара итераторов (

Код: Выделить всё

.begin()
и .end () ), безусловно, достаточно, чтобы получить работу на основе диапазона для работы. Но какой контейнер я бы использовал? Но связанный вопрос-с 2012 года, а Coroutines от C ++ 20, поэтому эта тема не была рассмотрена.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... a-co-yield

Вернуться в «C++»