coro/coyieldback.hpp

The following code example is taken from the book
C++20 - The Complete Guide by Nicolai M. Josuttis, Leanpub, 2021
The code is licensed under a Creative Commons Attribution 4.0 International License. Creative Commons License

// raw code

#include <iostream>
#include "corogenback.hpp"   // for CoroGenBack

CoroGenBack coro(int max)
{
  std::cout << "         CORO " << max << " start\n";

  for (int val = 1; val <= max; ++val) {
    // print next value:
    std::cout << "         CORO " << val << '/' << max << '\n';

    // yield next value:
    auto back = co_yield val;           // SUSPEND with value with response
    std::cout << "         CORO => " << back << "\n";
  }

  std::cout << "         CORO " << max << " end\n";
}