1

为什么和下面的例子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

4

1 回答 1

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;
于 2013-09-03T12:03:17.980 回答