连接 boost::mpl::string

发布于 2024-09-30 02:54:15 字数 4272 浏览 5 评论 0 原文

如何连接 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;
}

错误:

在 source.cpp:3:0 包含的文件中: string.hpp:在实例化中 'boost::mpl::push_back_impl< 升压::mpl::string_tag >::applyboost::mpl::string<、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_backboost::mpl::string<, boost::mpl::string<24930> >, mpl_::bool_ >::value' boost/mpl/aux_/has_type.hpp:20:1:
实例化自 'boost::mpl::aux::has_type< boost::mpl::push_backboost::mpl::string<, boost::mpl::string<24930> >, mpl_::bool_ >' boost/mpl/aux_/preprocessed/gcc/quote.hpp:56:5: 从 'boost::mpl::quote2< 实例化 升压::mpl::push_back >::applyboost::mpl::string<、boost::mpl::string<24930> >' boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp:49:1: 实例化自 'boost::mpl::apply_wrap2< 升压::mpl::quote2boost::mpl::push_back, boost::mpl::string>>, boost::mpl::string<24930> >' boost/mpl/aux_/preprocessed/gcc/bind.hpp:207:21: 从 'boost::mpl::bind2< 实例化 升压::mpl::quote2boost::mpl::push_back, mpl_::arg<1>、mpl_::arg<2> >::applyboost::mpl::string<、boost::mpl::string<24930> >' boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp:49:1: 实例化自 'boost::mpl::apply_wrap2< 升压::mpl::保护< boost::mpl::bind2boost::mpl::quote2、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> >'升压/mpl/aux_/预处理/gcc/fold_impl.hpp:87:85: 实例化自 'boost::mpl::aux::fold_impl< 3、boost::mpl::v_iter< boost::mpl::vectorboost::mpl::string<24930, boost::mpl::string<25444>, boost::mpl::string<25958> >, 0l >, boost::mpl::v_iter< boost::mpl::vectorboost::mpl::string<24930, 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::vectorboost::mpl::string<24930, 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:错误: “值”不是以下成员 'boost::mpl::string<24930>'在文件中 包括来自 boost/mpl/back_inserter.hpp:18:0,来自 升压/mpl/aux_/inserter_algorithm.hpp:18, 来自 boost/mpl/copy.hpp:20,来自 string.hpp:26,来自 source.cpp:3: boost/mpl/push_back.hpp:在 的实例化 'boost::mpl::push_back< boost::mpl::push_backboost::mpl::string<, 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_backboost::mpl::string<, 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_backboost::mpl::string<, boost::mpl::string<24930> >, boost::mpl::string<25444> >,mpl_::bool_ >' boost/mpl/aux_/preprocessed/gcc/quote.hpp:56:5: 从 'boost::mpl::quote2< 实例化 升压::mpl::push_back

How I can concatenate boost::mpl::string?
The following code produce errors:

#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;
}

errors:

In file included from source.cpp:3:0:
string.hpp: In instantiation of
'boost::mpl::push_back_impl<
boost::mpl::string_tag
>::applyboost::mpl::string<, boost::mpl::string<24930> >':
boost/mpl/push_back.hpp:32:1:
instantiated from
'boost::mpl::push_back<
boost::mpl::string<>, boost::mpl::string<24930>
>' boost/mpl/aux_/has_type.hpp:20:1:
instantiated from 'const bool
boost::mpl::aux::has_type<
boost::mpl::push_backboost::mpl::string<,
boost::mpl::string<24930> >,
mpl_::bool_
>::value' boost/mpl/aux_/has_type.hpp:20:1:
instantiated from
'boost::mpl::aux::has_type<
boost::mpl::push_backboost::mpl::string<,
boost::mpl::string<24930> >,
mpl_::bool_
>' boost/mpl/aux_/preprocessed/gcc/quote.hpp:56:5:
instantiated from 'boost::mpl::quote2<
boost::mpl::push_back
>::applyboost::mpl::string<, boost::mpl::string<24930> >'
boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp:49:1:
instantiated from
'boost::mpl::apply_wrap2<
boost::mpl::quote2boost::mpl::push_back,
boost::mpl::string<>,
boost::mpl::string<24930>
>' boost/mpl/aux_/preprocessed/gcc/bind.hpp:207:21:
instantiated from 'boost::mpl::bind2<
boost::mpl::quote2boost::mpl::push_back,
mpl_::arg<1>, mpl_::arg<2>
>::applyboost::mpl::string<, boost::mpl::string<24930> >'
boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp:49:1:
instantiated from
'boost::mpl::apply_wrap2<
boost::mpl::protect<
boost::mpl::bind2boost::mpl::quote2<boost::mpl::push_back,
mpl_::arg<1>, mpl_::arg<2> >, 0
>, boost::mpl::string<>, boost::mpl::string<24930>
>' boost/mpl/aux_/preprocessed/gcc/apply.hpp:73:1:
instantiated from 'boost::mpl::apply2<
boost::mpl::push_back<mpl_::arg<1>,
mpl_::arg<2> >, boost::mpl::string<>,
boost::mpl::string<24930>
>' boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp:87:85:
instantiated from
'boost::mpl::aux::fold_impl<
3, boost::mpl::v_iter<
boost::mpl::vectorboost::mpl::string<24930,
boost::mpl::string<25444>,
boost::mpl::string<25958> >, 0l
>, boost::mpl::v_iter<
boost::mpl::vectorboost::mpl::string<24930,
boost::mpl::string<25444>,
boost::mpl::string<25958> >, 3l
>, boost::mpl::string<>, boost::mpl::push_back<mpl_::arg<1>,
mpl_::arg<2> >
>' boost/mpl/fold.hpp:39:18: instantiated from 'boost::mpl::fold<
boost::mpl::vectorboost::mpl::string<24930,
boost::mpl::string<25444>,
boost::mpl::string<25958> >
, boost::mpl::string<>, boost::mpl::push_back<mpl_::arg<1>,
mpl_::arg<2> >
>' source.cpp:18:2: instantiated from here string.hpp:207:53: error:
'value' is not a member of
'boost::mpl::string<24930>' In file
included from
boost/mpl/back_inserter.hpp:18:0, from
boost/mpl/aux_/inserter_algorithm.hpp:18,
from boost/mpl/copy.hpp:20, from
string.hpp:26, from source.cpp:3:
boost/mpl/push_back.hpp: In
instantiation of
'boost::mpl::push_back<
boost::mpl::push_backboost::mpl::string<,
boost::mpl::string<24930> >,
boost::mpl::string<25444>
>': boost/mpl/aux_/has_type.hpp:20:1:
instantiated from 'const bool
boost::mpl::aux::has_type<
boost::mpl::push_back<
boost::mpl::push_backboost::mpl::string<,
boost::mpl::string<24930> >,
boost::mpl::string<25444>
>, mpl_::bool_
>::value' boost/mpl/aux_/has_type.hpp:20:1:
instantiated from
'boost::mpl::aux::has_type<
boost::mpl::push_back<
boost::mpl::push_backboost::mpl::string<,
boost::mpl::string<24930> >,
boost::mpl::string<25444>
>, mpl_::bool_
>' boost/mpl/aux_/preprocessed/gcc/quote.hpp:56:5:
instantiated from 'boost::mpl::quote2<
boost::mpl::push_back

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

醉态萌生 2024-10-07 02:54:15
#include <iostream>
#include <boost/mpl/vector.hpp>
#include <boost/mpl/string.hpp>
#include <boost/mpl/fold.hpp>
#include <boost/mpl/front.hpp>
#include <boost/mpl/deref.hpp>
#include <boost/mpl/placeholders.hpp>
#include <boost/mpl/push_back.hpp>

using namespace boost;

typedef boost::mpl::vector<
   boost::mpl::string<'a','b'>,
   boost::mpl::string<'c','d'>,
   boost::mpl::string<'e','f'>
> slist;


typedef boost::mpl::reverse_fold<
   slist,
   mpl::string<>,
   boost::mpl::copy<mpl::_1, mpl::back_inserter<mpl::_2> >
>::type string;

int main() {
   std::cout << boost::mpl::c_str<string>::value << std::endl;
}
#include <iostream>
#include <boost/mpl/vector.hpp>
#include <boost/mpl/string.hpp>
#include <boost/mpl/fold.hpp>
#include <boost/mpl/front.hpp>
#include <boost/mpl/deref.hpp>
#include <boost/mpl/placeholders.hpp>
#include <boost/mpl/push_back.hpp>

using namespace boost;

typedef boost::mpl::vector<
   boost::mpl::string<'a','b'>,
   boost::mpl::string<'c','d'>,
   boost::mpl::string<'e','f'>
> slist;


typedef boost::mpl::reverse_fold<
   slist,
   mpl::string<>,
   boost::mpl::copy<mpl::_1, mpl::back_inserter<mpl::_2> >
>::type string;

int main() {
   std::cout << boost::mpl::c_str<string>::value << std::endl;
}
欢烬 2024-10-07 02:54:15
//it's very easy to do this to have the same out put: abcdef

#include <boost/mpl/string.hpp>
#include <iostream>

typedef mpl::string<'ab','cd','ef'> string;

int main() {
   std::cout << mpl::c_str<string>::value << std::endl;
}
//it's very easy to do this to have the same out put: abcdef

#include <boost/mpl/string.hpp>
#include <iostream>

typedef mpl::string<'ab','cd','ef'> string;

int main() {
   std::cout << mpl::c_str<string>::value << std::endl;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文