Boost.Fusion 出力フォーマット

Boost.Fusionでは、tuple_open, tuple_close, tuple_delimiterというのを使用することによって、出力時のフォーマットを変更することができます。

#include <iostream>
#include <boost/fusion/include/make_vector.hpp>
#include <boost/fusion/include/io.hpp>

namespace fusion = boost::fusion;

int main()
{
    std::cout << fusion::tuple_open('[');
    std::cout << fusion::tuple_close(']');
    std::cout << fusion::tuple_delimiter(", ");

    std::cout << fusion::make_vector(1, 'a', "Hello") << std::endl;
}
[1, a, Hello]

これ何気にすごいなぁ。