ボレロ村上 - ENiyGmaA Code

中3女子です。

boost::mpl::string と boost::mpl::c_str

boost::mpl::string は、現状 char にしか対応していない。

typedef boost::mpl::string<L'f', L'o', L'o', L'あ', L'あ', L'あ'>::type foo;
sprig::cout_section_line("foo", boost::mpl::c_str<foo>::value);
// <foo>foo0B0B0B</foo>

どうやらワイド文字リテラルは、multi-character literal('foo'←こういうの)と同じように処理されるらしい。


じゃあ wchar_t 使いたい時はどうすれば、と思ったら
boost::mpl::c_str は boost::mpl::string に限らずMPLシーケンスなら何でも渡せるようだ。

typedef boost::mpl::vector_c<wchar_t, L'f', L'o', L'o', L'あ', L'あ', L'あ'>::type foo;
sprig::cout_section_line("foo", boost::mpl::c_str<foo>::value);
// <foo>fooあああ</foo>


これは便利。