Boost.Coroutine 移植中

とりあえず boost::coroutines::coroutine は一通り移植できて、こんな感じに使えるようになってきました。

int fib(coroutine<int ()>::self& self)
{
    // 初項
    int n = 0;
    self.yield(n);

    // 2項
    int m = 1;
    self.yield(m);

    // 3項以降
    while (true)
    {
        int v = m + n;
        self.yield(v);
        n = m;
        m = v;
    }
}
coroutine<int ()> c(fib);
for (int i = 0; i < 10; i++)
{
    DBGPRINTF("fib: %d", c());
}
fib: 0
fib: 1
fib: 1
fib: 2
fib: 3
fib: 5
fib: 8
fib: 13
fib: 21
fib: 34

あとは shared_coroutine とか generator とか、コルーチン用スタックのアロケートに自前のアロケータを使用できるようにしてみたりとかすれば実用できそうな感じ。


ある程度実装できたら公開します。
→公開しました