Как можно было бы идентифицировать типы внутри вектора boost :: fusion?
например
fusion::vector<int, double, string> v;
тогда что-то, что позволило бы мне идентифицировать v[0]
как тип int
, v[1]
как тип double
а также v[2]
как тип string
,
Благодарю.
Чтобы извлечь элемент из 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 является вектором std :: вектора boost :: fusion.