我正在尝试使用可变参数模板进行类构成。这个想法是Composer
类简单地聚合了一些变量并将函数调用转发给所有实例化的变量。如何扩展基类的参数包和每个成员函数的调用?
首先我使用以下简单包装类:
template< typename T >
struct WrapperType
{
typedef T wrapped_type;
typedef typename wrapped_type::value_type value_type;
wrapped_type wrapee_;
WrapperType() : wrapee_{}
{}
};
这是使用具有以下Composer
类,它希望从WrapperType
实例化在参数包Args
每种类型的派生:
template< typename... Args >
struct Composer : public WrapperType<Args>...
{
Composer() : WrapperType<Args>{}...
{}
void display()
{
((WrapperType<Args>...)::wrapee_).display(); // HOW?
}
};
假设每个包装类型都有一个display()
成员函数,我怎样才能为参数包中的每个类型调用display()
函数?
I.E.如果我有:
Composer< T1, T2, T3 > myComposer{};
myComposer.display();
我想myComposer.display()
呼吁display()
为T1
,T2
,T3
。
[为什么参数包扩展如此有限?](http://stackoverflow.com/questions/24316654/why-parameter-pack-expansion-is-so-limited) – Pradhan 2014-09-29 18:32:13