Boost.Range 新しい出力フォーマット

だいぶ前のチケットですが、完了しました。今までのBoost.Rangeの出力フォーマットは、{1, 2, 3}というRangeがあったら"123"という文字列を出力するので、使いものになりませんでした。パースできない。

これを解決するために、boost::adaptors::formattedというフォーマット設定用のRangeアダプタが新しく入ります。

#include <boost/range/adaptor/formatted.hpp>
using namespace boost::adaptors;

vector<int> v = {1, 2, 3};

// デフォルトのフォーマット
cout << (v | formatted()) << endl; // "{1,2,3}"

// 区切り文字(列)を指定
cout << (v | formatted(',')) << endl;

// 区切り文字(列)と、プレフィックス/サフィックスを指定
cout << (v | formatted(',', '{', '}')) << endl;

// パイプ演算子を使わない関数表記
cout << format(v) << endl;

Boost 1.56.0のリリースにはギリギリすぎて間に合わないので、その次のリリースで入れるそうです。