为什么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
相同的类型?
答案 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;