VC++2013+boost1.55のxpressive::smatchとwchar_tでエラー
VC++2013とboost1.55の組み合わせをいろいろ試していておぞましい例に出会った。
ビルドしているプロジェクトの文字コードはUnicode Character Setで今まで通り。なぜかこの環境でxpressive::smatchを使おうとするとエラーが出る。
具体的にはsmatchの変数を宣言しただけだが、以下のようにエラーを出した。
e:\dev\lib\boost-trunk\boost\xpressive\sub_match.hpp(190): error C2664: 'int boost::mpl::assertion_failed<false>(boost::mpl::assert<false>::type)' : cannot convert argument 1 from 'boost::mpl::failed ************(__thiscall boost::xpressive::<<::CHARACTER_TYPES_OF_STREAM_AND_SUB_MATCH_MUST_MATCH::* ***********)(Char,char_type)' to 'boost::mpl::assert<false>::type' 3> with 3> [ 3> Char=wchar_t 3> ] 3> No constructor could take the source type, or constructor overload resolution was ambiguous
な・・・なんじゃこりゃ。なんだかコンパイル時にsmatchがテンプレートで受け取った文字コードを受け付けず、mpl::assertion_failedで失敗しちゃってるのでwsmatchで変数を宣言してみたら出なくなった。
・・・・・?????
いやぁ・・・なんというか・・・なんだこれ・・・。前は全く問題なかったのですが???