boost::mpl::string を連結するにはどうすればよいですか? 次のコードではエラーが発生します。
#include <iostream>
#include <boost/mpl/vector.hpp>
#include <boost/mpl/string.hpp>
#include <boost/mpl/fold.hpp>
#include <boost/mpl/placeholders.hpp>
#include <boost/mpl/push_back.hpp>
typedef boost::mpl::vector<
boost::mpl::string<'ab'>,
boost::mpl::string<'cd'>,
boost::mpl::string<'ef'>
> slist;
typedef boost::mpl::fold<
slist,
boost::mpl::string<>,
boost::mpl::push_back<boost::mpl::_1, boost::mpl::_2>
>::type string;
int main() {
std::cout << boost::mpl::c_str<string>::value << std::endl;
}
完全なソースはこちら: http://liveworkspace.org/code/31902a4b1b0831d054119bc0b8923cb6 エラー:
source.cpp:3:0 からインクルードされたファイル: string.hpp: 'boost::mpl::push_back_impl< boost::mpl::string_tag のインスタンス化
::apply, boost::mpl::string<24930> >':boost/mpl/push_back.hpp:32:1:
'boost::mpl::push_back<boost::mpl::string<>からインスタンス化された、 boost::mpl::string<24930> ' boost/mpl/aux_/has_type.hpp:20:1:
'const bool boost::mpl::aux::has_type< boost::mpl::push_back, boost からインスタンス化::mpl::string<24930> >, mpl_::bool_ ::value' boost/mpl/aux_/has_type.hpp:20:1:
'boost::mpl::aux::has_type< boost::mpl::push_back, boost::mpl::string<24930> >, mpl_::bool_ からインスタンス化 ' boost/mpl/aux_/preprocessed/gcc/quote .hpp:56:5: 「boost::mpl::quote2< boost::mpl::push_back ::apply, boost::mpl::string<24930> >」からインスタンス化された boost/mpl/aux_/preprocessed/gcc /apply_wrap.hpp:49:1: 「boost::mpl::apply_wrap2< boost::mpl::quote2, boost::mpl::string<>, boost::mpl::string<24930> からインスタンス化」 /mpl/aux_/preprocessed/gcc/bind.hpp:207:21: 'boost::mpl::bind2< boost::mpl::quote2, mpl_::arg<1>, mpl_::arg<2 からインスタンス化> ::apply, boost::mpl::string<24930> >' boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp:49:1: 'boost::mpl::apply_wrap2< boost::mpl::protect< boost::mpl::bind2, mpl_::arg<1>, mpl_::arg<2> >, 0 からインスタンス化boost::mpl::string<>, boost::mpl::string<24930> ' boost/mpl/aux_/preprocessed/gcc/apply.hpp:73:1: 'boost::mpl::apply2< からインスタンス化boost::mpl::push_back, mpl_::arg<2> >, boost::mpl::string<>, boost::mpl::string<24930> ' boost/mpl/aux_/preprocessed/gcc/fold_impl. hpp:87:85: 'boost::mpl::aux::fold_impl< 3, boost::mpl::v_iter< boost::mpl::vector, boost::mpl::string<25444>, boost からインスタンス化::mpl::string<25958> >, 0l , boost::mpl::v_iter< boost::mpl::vector, boost::mpl::string<25444>, boost::mpl::string<25958> >, 3l , boost::mpl::string<>, boost::mpl::push_back, mpl_::arg<2> > ' boost/mpl/ fold.hpp:39:18: 'boost::mpl::fold< boost::mpl::vector, boost::mpl::string<25444>, boost::mpl::string<25958> > からインスタンス化boost::mpl::string<>, boost::mpl::push_back, mpl_::arg<2> > ' source.cpp:18:2: ここからインスタンス化 string.hpp:207:53: エラー: 'value ' is not a member of 'boost::mpl::string<24930>' in boost/mpl/back_inserter.hpp:18:0, from boost/mpl/aux_/inserter_algorithm.hpp:18, from boost/ mpl/copy.hpp:20、string.hpp:26 から、source.cpp:3 から: boost/mpl/push_back.hpp: 'boost:: のインスタンス化中mpl::push_back< ブースト::mpl::push_back, boost::mpl::string<24930> >, boost::mpl::string<25444> ': boost/mpl/aux_/has_type.hpp:20:1 :
const bool boost::mpl::aux::has_type< boost::mpl::push_back< boost::mpl::push_back, boost::mpl::string<24930> >, boost::mpl:: からインスタンス化string<25444> , mpl_::bool_ ::value' boost/mpl/aux_/has_type.hpp:20:1:
'boost::mpl::aux::has_type< boost::mpl::push_back< boost::mpl::push_back< boost からインスタンス化::mpl::push_back, boost::mpl::string<24930> >, boost::mpl::string<25444> , mpl_::bool_ ' boost/mpl/aux_/preprocessed/gcc/quote.hpp:56 :5: 'boost::mpl::quote2< boost::mpl::push_back からインスタンス化