Я использовал lite mpl, который я написал сам, но мне нужно, чтобы он был более надежным. В настоящее время я рассматриваю использование boost :: hana, и, похоже, у меня есть все, что мне нужно, за одним исключением: я не вижу способа изменить типы в hana :: tuple в контейнер этих типов.Преобразование типов в hana :: tuple to std :: vector <type> в пределах hana :: tuple
Например, это то, что я использую для преобразования зОго :: кортежа типов в станде :: кортеж станда :: векторы этих типов:
#include <vector>
#include <tuple>
template<typename... Ts>
struct Typelist{
};
// Declare List
template<class> class List;
// Specialize it, in order to drill down into the template parameters.
template<template<typename...Args> class t, typename ...Ts>
struct List<t<Ts...>> {
using type = std::tuple<std::vector<Ts>...>;
};
// Sample Typelist
struct A{};
struct B{};
struct C{};
using myStructs = Typelist<A,B,C>;
// And, the tuple of vectors:
List<myStructs>::type my_tuple;
// Proof
int main()
{
std::vector<A> &a_ref=std::get<0>(my_tuple);
std::vector<B> &b_ref=std::get<1>(my_tuple);
std::vector<C> &c_ref=std::get<2>(my_tuple);
return 0;
}
Есть ли повышающий :: хана вариант этого, что я с видом? Или мне нужно довести это до конца и изменить его для работы с hana :: tuple вместо std :: tuple?