Boost.Context による単純なファイバー

いわゆる非対称コルーチン。C++03/11 両対応。
https://gist.github.com/3684731
簡単な使い方。

#include <iorate/fiber.hpp>

int main()
{
    iorate::fiber f([]
    {
        for (auto const c : "Hello, world!\n")
        {
            std::cout << c;
            iorate::fiber::yield();
        }
    });

    while (f.alive())
    {
        f.resume();
    }
}

Boost.Context は trunk に入った当初は高レベル API を提供していたのですが、ある時を境にばっさり削除されてしまったという経緯があります(Boost.Contextの怒涛の変更 - にゃははー に詳しい)。おかげで Boost.Context でググって出てくる記事の多くは今では動かないコードだったり…。
まあ高レベル API は Boost.Coroutine あたりが Context ベースで書き直されて入ると思うので、もう少しの辛抱だと思います。