C++ Boost Coroutine

Da Andreabont's Wiki.

La sottolibreria coroutine delle BOOST permette di avere l'equivalente dei generatori Python in C++.

Compilazione

Per compilare è necessario linkare delle librerie dinamiche.

g++ -lboost_system -lboost_coroutine <file_cpp>

Codice

Aymmetric

#include "boost/coroutine/all.hpp"
#include <iostream>

int main () {
    
    boost::coroutines::asymmetric_coroutine<int>::pull_type source(
    [&](boost::coroutines::asymmetric_coroutine<int>::push_type& sink){
        
        for(int i = 0; i < 10; i++) {
            sink(i*2);
        }
        
    });

    for(auto i:source) {
        std::cout << i <<  " "; // Stampa 0 2 4 6 8 10 12 14 16 18 
    }
    
}