如何从mpl :: vector生成fusion :: vector?
如何从fusion :: vector生成mpl :: vector?
如何从fusion :: vector生成mpl :: vector?
BOOST_MPL_ASSERT((is_same< fusion::vector<int,char>,generate_fusion_vector<mpl::vector<int,char> >::type >)); BOOST_MPL_ASSERT((is_same< mpl::vector<int,generate_mpl_vector<fusion::vector<int,char> >::type >));
我需要generate_fusion_vector和generate_mpl_vector元函数.
我可以编写自己的元函数,但我怀疑它们已经存在.
我曾经有过使用help_of :: as_map生成fusion :: map的经验,但是在当前的boost(trunk,也是1.39)中会出现这样的错误:
D:\Libraries\boost_trunk\boost/fusion/sequence/intrinsic/size.hpp(56) : error C2903: 'apply' : symbol is neither a class template nor a function template D:\Libraries\boost_trunk\boost/fusion/container/vector/convert.hpp(23) : see reference to class template instantiation 'boost::fusion::result_of::size' being compiled with [ Sequence=boost::mpl::vector ] temp.cpp(71) : see reference to class template instantiation 'boost::fusion::result_of::as_vector' being compiled
我不明白发生了什么事?
解决方法
由于fusion接受mpl类型作为函数的参数,您可以尝试这样做:
BOOST_MPL_ASSERT((is_same< fusion::vector<int,fusion::result_of::as_vector<mpl::vector<int,char> >::type >));
编辑:
我认为这对你不起作用的原因是你必须包含某些头文件才能在融合中实现mpl兼容性.
#include <boost/fusion/adapted/mpl.hpp> #include <boost/fusion/include/mpl.hpp>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。