4

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

例如

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

然后是可以让我识别v[0]为 type intv[1]as typedoublev[2]as type的东西string

谢谢。

4

2 回答 2

6

为了从 a 中提取元素,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
于 2012-10-27T14:36:57.260 回答
0

此链接描述了我正在尝试做的事情。

详细地说,以下是我试图实现的目标:

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。

于 2012-10-27T14:34:05.513 回答