Мне нужно реализовать некоторый Variadic шаблонный контейнерный класс с гетерогенными элементами, который позволяет выполнять итерацию этими элементами. Моя первая мысль, это сделать класс с членом станд :: кортеж с переменным числом аргументов, но получить элементы из кортежа по массиву манере (с помощью петли) невозможно:Неоднородный контейнер шаблонов Variadic
struct A {void prnt(){std::cout<<"A\n";} };
struct B {void prnt(){std::cout<<"B\n";} };
struct C {void prnt(){std::cout<<"C\n";} };
template<typename...Arg>
struct Prc
{
Prc() : NumElems(sizeof...(Arg)), mems(std::make_tuple(Arg()...)){}
int NumElems;
std::tuple<Arg...> mems;
void process()
{
for(int i=0; i<NumElems; ++i)
std::get<i>(mems).prnt();//It's forbidden: "i" must be a constant
}
};
int main()
{
Prc<A,B,C> obj;
obj.process();
}
Любые идеи?
P.S. Я не хочу использовать подталкивание разнородных контейнеров, как импульса :: варианта или повышения :: любой
(http://loungecpp.wikidot.com/tips-and-tricks:indices) – Xeo
Я не уверен, что вы подразумеваете под " массивным образом ». – jsp