如何在boost :: fusion :: map中使用boost :: mpl :: fold?

时间:2009-12-30 13:59:55

标签: c++ boost boost-mpl boost-fusion

当我尝试编译时:

#include <boost/fusion/container/map.hpp>
#include <boost/mpl/fold.hpp>

int main(int argc, char** argv)
{
    typedef boost::fusion::map
    <
        boost::fusion::pair<int, const char*>,
        boost::fusion::pair<long, char>
    > FuMap;

    FuMap fuMap("hello", 'w');

    unsigned val = boost::mpl::fold
    <
        FuMap, boost::mpl::int_<0>, boost::mpl::next<boost::mpl::_1>
    >::type::value;
}

我收到以下错误:

"...boost/mpl/begin_end.hpp", line 35: Error, nofieldfnd: 
apply is not a member of 
boost::mpl::begin_impl<boost::fusion::fusion_sequence_tag>.

从融合文档:“Fusion提供全面的兼容性 与MPL。融合序列是完全符合MPL序列和MPL 序列与Fusion完全兼容。您可以使用Fusion 如果你想单独使用类型,请在MPL上进行序列化。“

当我传递boost :: mpl :: map时,它可以工作。

任何线索?

1 个答案:

答案 0 :(得分:1)

我在http://news.gmane.org/gmane.comp.lib.boost.user问了同样的问题,克里斯托弗施密特的答案是正确的:

#include <boost/fusion/mpl.hpp>

应该解决你的问题“