stream, filtering_streamのコンストラクタとパイプライン

これらのコンストラクタはいくつかオーバーロードされてるのですが、
なるべく短いコードで書きたい(I/Oが行える状態にしたい)です。書きましょう。

streamのコンストラクタ引数は、Deviceのコンストラクタ引数と同じものを取ります。

namespace io = boost::iostreams;

io::stream<io::file_sink> file("baby.hs");


filtering_stream(istream/ostream)のコンストラクタは、0以上のFilterのインスタンスと1つのDeviceのインスタンスを引数に取ります。

Filterを使わない場合。

io::filtering_ostream out(io::file_sink("index.html"));

Filterを使う場合。

io::filtering_istream in(
        io::gzip_decompressor() | io::file_source("gzip_file.gz"));

なんかでてきました。パイプラインです。
1つ目のFilterがPipable*1なら|演算子を使ってFilterやDeviceを連結することができます。

*1:そのFilterに|演算子が使えるよう、BOOST_IOSTREAMS_PIPELINEマクロが書かれている