gpt4 book ai didi

c++ - 从 mpl::vector 生成 fusion::vector

转载 作者:太空狗 更新时间:2023-10-29 20:19:25 29 4
gpt4 key购买 nike

如何从 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, char>,
generate_mpl_vector<fusion::vector<int, char> >::type >));

我需要 generate_fusion_vectorgenerate_mpl_vector 元函数。我可以编写自己的元函数,但我怀疑它们已经存在。

我之前有过在result_of::as_map的帮助下生成fusion::map的经验,但是在当前的boost(trunk, 1.39 also)中出现这样的错误:

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, char>,
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,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1036924/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com