演算子によるデバイス/フィルタの合成/コピー

ちぅか,昨日のをスコープ限定型演算子構文糖(http://d.hatena.ne.jp/Cryolite/20050205#p1 の『[Boost][Range]iterationできるrange』を参照)使って書いたら楽しいことになる予感!!

namespace cry{ namespace iostreams{ namespace composite_operators{

// operator>> をてけとーに定義

}}}

namespace io = boost::iostreams;
namespace cry_io = cry::iostreams;
using namespace cry::iostreams::composite_operators;

io::file_source( "inputfile", std::ios_base::binary )
    >> cry_io::newline_filter( "cry_io::newline::posix" )
    >> cry_io::u_convert_filter( "Shift_JIS" )
    >> io::tee(
           cry_io::u_convert_filter( "UTF-8" ) >> io::back_inserter( u )
         , cry_io::u_convert_filter( "EUC-JP" )
               >> cry_io::newline_filter( "cry_io::newline::dos" )
               >> io::file_sink( "outputfile", std::ios_base::binary ) );

おぉ,データの流れ(ストリーム)が見える!!見えるぞおおおぉぉぉ!!