我正在嘗試使用可變參數模板進行類構成。這個想法是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