concatenation
一時はお蔵入りかと思われたhamigaki::iostreams::concatenationですが、hamigaki::iostreams::lazy_restrictionのおかげで復活しました。
ただ、
manager.copy( io_ex::concatenate( io_ex::concatenate( io_ex::lazy_restrict(vf, 0, offset+len), io_ex::loop( io_ex::lazy_restrict(vf, offset, len), loop_count ) ), io_ex::lazy_restrict(vf, offset+len) ), pcm );
みたいに、concatenateが入れ子になると非常に読みにくいのです。
そこで、id:Cryolite:20051129 さんの記事を参考にオペレータのオーバーロードを追加してみました。
using namespace io_ex::cat_operators; // シンタックス・シュガーを導入 manager.copy( io_ex::lazy_restrict(vf, 0, offset+len) + io_ex::loop(io_ex::lazy_restrict(vf, offset, len),loop_count) + io_ex::lazy_restrict(vf, offset+len), pcm );
随分すっきりしました。