如何识别boost :: fusion向量中的类型?
e.g。
fusion::vector<int, double, string> v;
然后我会将v[0]
识别为int
类型,将v[1]
识别为类型double
而将v[2]
识别为类型string
。
感谢。
答案 0 :(得分:6)
要从boost::fusion::vector
中提取元素,您需要使用boost::fusion::at_c
,如下所示:
boost::fusion::vector<int, std::string> v(1, "hello");
std::cout << boost::fusion::at_c<0>(v) << std::endl; // prints 1
位置N的类型是:
boost::fusion::result_of::at_c<boost::fusion::vector<int, std::string>, 1>::type
答案 1 :(得分:0)
This link描述了我的目标。
详细地说,以下是我想要实现的目标:
template<int N, typename T>
struct a_struct{
typedef typename T::value_type etype;
typedef typename boost::fusion::result_of::value_at<etype, boost::mpl::int_<N> >::type a_type;
};
其中T是boost :: fusion矢量的std :: vector。