Сопрограммы с подпрограммами в Visual Studio 2015

Visual Studio 2015 поддерживает сопрограммы, поэтому я могу сделать это, например:

#include<iostream>
#include<experimental/generator>

auto gen(int increment) {
int i=1;
while(true) {
for(int j=0; j<i; j++) yield j;
i+=increment;
}
}int main()
{
auto Coroutine1=gen(1);
auto Coroutine2=gen(2);
auto Iterator1=Coroutine1.begin();
auto Iterator2=Coroutine2.begin();
for(int k=0; k<10; k++) {
std::cout<<(*Iterator1)<<" "<<(*Iterator2)<<endl;
++Iterator1;
++Iterator2;
}

который производит этот вывод:

0 0
0 0
1 1
0 2
1 0
2 1
0 2
1 3
2 4
3 0

Это несколько надуманный пример, просто чтобы показать случай, который невозможно реализовать без сопрограмм.

Теперь мой вопрос: как я могу поместить «yield» в подпрограмму? Следующий код не компилируется, но в идеале я хочу что-то вроде этого:

auto genSubroutine(int current){
for(int j=0; j<current; j++) yield j;
}

auto gen(int increment) {
int i=1;
while(true) {
genSubroutine(i);
i+=increment;
}
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …