为什么要融合:: map<>类型不一样

时间:2013-09-03 07:16:53

标签: boost-fusion

为什么type与下面示例中的expected不一致?

using origin = boost::fusion::map<
    boost::fusion::pair<int, int>
>;
using expected = boost::fusion::map<
     boost::fusion::pair<int, int>
    ,boost::fusion::pair<char, char>
>;

using type = boost::fusion::result_of::push_back<
     origin
    ,boost::fusion::pair<char, char>
>::type;

static_assert(std::is_same<expected, type>::value, "error!");

第二个问题是,使用expected时如何才能获得与result_of::push_back<>::type相同的类型?

1 个答案:

答案 0 :(得分:1)

您需要使用fusion::result_of::as_map

using origin = boost::fusion::map<
    boost::fusion::pair<int, int>
>;
using expected = boost::fusion::map<
     boost::fusion::pair<int, int>
    ,boost::fusion::pair<char, char>
>;

using type = typename boost::fusion::result_of::as_map<
    typename boost::fusion::result_of::push_back<
         origin
        ,boost::fusion::pair<char, char>
    >::type
>::type;