Преобразование параметров вариативного шаблона в другие типы

Как преобразовать типы из параметров вариативного шаблона в другой тип?

Например:

template <typename... T>
struct single
{
   std::tuple<T...> m_single;
};

template <typename... T>
struct sequences
{
   single<T...> get(size_t pos)
   {
       // I don't know how to convert here
       return std::make_tuple(std::get<0>(m_sequences)[pos]... std::get<N>(m_sequences)[pos]);
   }

   template <size_t Idx>
   std::vector<
      typename std::tuple_element<Idx, std::tuple<T...>>::type
      >
   get_sequence()
   {
      return std::get<Idx>(m_sequences);
   }

   std::tuple<T...> m_sequences; // std::tuple<std::vector<T...>> I don't know how to conver here
};

Я хочу написать так:

sequences<int, double, double> seq;
single<int, double, double> sin = seq.get(10);

И иметь std :: tuple , std :: vector , std :: vector > в последовательностях структур. И получить из него сингл.

std :: vector > - плохая идея для меня, потому что мне нужно заполнить одну последовательность, и ее легко скопировать из.

Возможно ли это?

Большое спасибо. Извините за плохой английский.

13
задан mark 23 March 2012 в 19:58
поделиться