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.
     
 
 
// raw code
 
#include "coyieldback.hpp" 
#include <iostream> 
#include <vector> 
 
int main() 
{ 
  // start coroutine:  
  auto coroGen = coro(3);              // initialize coroutine  
  std::cout << "**** coro() started\n"; 
 
  // loop to resume the coroutine until it is done:  
  std::cout << "\n**** resume coro()\n"; 
  while (coroGen.resume()) {           // RESUME  
    // process value from co_yield:  
    auto val = coroGen.getValue(); 
    std::cout << "**** coro() suspended with " << val << '\n'; 
 
    // set response (the value co_yield yields):  
    std::string back = (val % 2 != 0 ? "OK" : "ERR");   
    std::cout << "\n**** resume coro() with back value: " << back << '\n'; 
    coroGen.setBackValue(back);        // set value back to the coroutine  
  } 
 
  std::cout << "**** coro() done\n"; 
}