我需要实现一些带有异构元素的可变参数模板容器类,它允许迭代这些元素。我最初的想法是让与可变参数的std ::元组成员类,但(通过循环)正从元组元素通过阵列状的方式是不可能的: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.我不想使用升压异质的容器,就像的boost ::变种或的boost ::任何
(http://loungecpp.wikidot.com/tips-and-tricks:indices) – Xeo
我不知道你所说的“是什么意思大规模的方式“。 – jsp