Enumerate問題 解決

http://d.hatena.ne.jp/y-hamigaki/20060407
から悩み続けてきたEnumerate系関数のiterator化もHamigaki.Coroutineのおかげでようやく解決しました。
今やDirectSoundデバイスとDirectSoundCaptureデバイスIteratorで列挙可能です。
direct_sound.hppの差分
direct_sound.cppの差分

使用例として、テストコードの抜粋を載せておきます。

struct print_device_name
{
    void operator()(const ds::device_info& info) const
    {
        std::cout << info.description << '\n';
    }
};

void direct_sound_enumerate_test()
{
    std::pair<
        ds::device_info_iterator,
        ds::device_info_iterator> r(ds::device_info_range());

    std::cout << "The installed DirectSound drivers:\n";
    std::for_each(r.first, r.second, print_device_name());
    std::cout << std::endl;
}

出力結果はここにあります。