如何识别增强融合向量中的类型

时间:2012-10-27 14:19:40

标签: c++ boost boost-fusion

如何识别boost :: fusion向量中的类型?

e.g。

fusion::vector<int, double, string> v;

然后我会将v[0]识别为int类型,将v[1]识别为类型double而将v[2]识别为类型string

感谢。

2 个答案:

答案 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。