如何识别 boost::fusion 向量中的类型?
例如
fusion::vector<int, double, string> v;
然后是可以让我识别v[0]
为 type int
,v[1]
as typedouble
和v[2]
as type的东西string
。
谢谢。
如何识别 boost::fusion 向量中的类型?
例如
fusion::vector<int, double, string> v;
然后是可以让我识别v[0]
为 type int
,v[1]
as typedouble
和v[2]
as type的东西string
。
谢谢。
为了从 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
此链接描述了我正在尝试做的事情。
详细地说,以下是我试图实现的目标:
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。