我是融合的新手。是否可以在融合图内嵌套融合图?在以下示例中,我如何编写代码解析为B?

#include <boost/asio.hpp>
#include <boost/fusion/container/map.hpp>
#include <boost/unordered_map.hpp>

struct A
{
};

struct B
{
};

int main()
{
    boost::fusion::map<
        boost::fusion::pair<
            A,
            boost::fusion::map<boost::fusion::pair<unsigned int, B>>
        >
    > map_;

    B b = boost::fusion::at_key<unsigned int>((boost::fusion::at_key<A>(map_)); //compile error
}

最佳答案

除了语法错误(一个额外的括号)之外,您仅缺少一些#include。这对我来说很好:

#include <boost/fusion/include/at_key.hpp>
#include <boost/fusion/include/map.hpp>
#include <boost/fusion/include/pair.hpp>

struct A { };
struct B { };

int main()
{
    boost::fusion::map<
        boost::fusion::pair<
            A,
            boost::fusion::map<boost::fusion::pair<unsigned int, B>>
        >
    > map_;

    B b = boost::fusion::at_key<unsigned int>(boost::fusion::at_key<A>(map_));
}

Online Demo

关于c++ - 是否可以在 fusion 图内嵌套 fusion 图?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13188593/

10-12 02:53