Как идентифицировать типы в векторе ускоренного синтеза

Как можно было бы идентифицировать типы внутри вектора boost :: fusion?

например

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

тогда что-то, что позволило бы мне идентифицировать v[0] как тип int, v[1] как тип double а также v[2] как тип string,

Благодарю.

4

Решение

Чтобы извлечь элемент из 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
6

Другие решения

Эта ссылка описывает то, что я пытался сделать.

Подробно, вот что я пытался достичь:

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.

0