c – 从mpl :: vector生成fusion :: vector

发布时间:2020-09-16 发布网站:编程之家
编程之家收集整理的这篇文章主要介绍了c – 从mpl :: vector生成fusion :: vector编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何从mpl :: vector生成fusion :: 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>

总结

以上是编程之家为你收集整理的c – 从mpl :: vector生成fusion :: vector全部内容,希望文章能够帮你解决c – 从mpl :: vector生成fusion :: vector所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入编程之家官方QQ群:1065694478
编程之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ”
精选程序员所需精品干货内容!