coroutines::processor
Boost.Coroutineのドキュメントの「Further Development」の項にgeneratorのOutput Iteratorなるものが書かれているのを見つけたので、一足先に実装してみました。
<hamigaki/coroutine/processor.hpp>
いつも通りテストコードの抜粋を貼っておきます。
typedef coro::processor<int> processor_type; void print_processor_body(processor_type::self& self, int arg) { while (true) { std::cout << arg << std::endl; arg = self.yield(); } } void processor_test() { std::copy( boost::make_counting_iterator(0), boost::make_counting_iterator(10), processor_type(print_processor_body) ); }
コルーチンの引数は初回のみbodyの引数で、それ以降はyield()の戻り値になります。
ちょっと格好悪いですが、argの値は手動で更新する必要があります。