2014-03-07 37 views
2

我想typedef可變參數模板參數,如附加的代碼所示。有可能實現這一目標?C++ typedef爲可變參數模板參數

template <typename... T> 
class Test 
{ 
public: 
    typedef T Arg; 
}; 

template <typename T> 
class X 
{ 
public: 
    X(T::Arg arg); 
}; 
+3

包不是類型。他們是奇怪的東西。 – Simple

回答

3

您無法將包裝分配到非包裝。但你可以把它變成std::tuple

template <typename... T> 
class Test 
{ 
public: 
    typedef std::tuple< T ... > Arg; 
}; 

Arg隨後獲得與參數列表T ...功能需要多一點的工作,我不建議這樣做的設計模式。以其他方式將class TestX::X結合起來可能會更好。

+0

我附帶的Tha代碼只是一個測試。我正在編寫一個我可以用這種方式的擴展層:_class myclass:public extensible _。而myclass_extension_descriptor是描述符的_typedef _。可擴展類有一個load_extension方法,它看起來像這樣:_void load_extension(const std :: string&path,myclass_extension_descriptor :: Args ... args)_。 –