2012-02-27 90 views
2

我試圖避免LOKI_TYPELIST_n宏,所以我雖然我可以寫簡單的洛基::類型串包裝。裹洛基::類型串與C++ 11可變參數模板

template <typename...Ts> 
struct TYPELIST; 

template <> 
struct TYPELIST<> 
{ 
    typedef Loki::NullType Result; 
}; 

template <typename HEAD, typename...Ts> 
struct TYPELIST<HEAD,Ts...> 
{ 
    typedef Loki::Typelist<HEAD, TYPELIST<Ts...>::Result> Result; 
}; 

在編譯時,我得到以下錯誤:

error: type/value mismatch at argument 2 in template parameter list for ‘template<class T, class U> struct Loki::Typelist’ 
error: expected a type, got ‘TYPELIST<Ts ...>::Result’ 

我雖然TYPELIST<Ts...>::Result是一種類型。它有什麼問題? GCC 4.6.2在這裏。

我想用這樣的:

typedef TYPELIST< 
     EventTank1, 
     EventTank2, 
     EventTank3 
    >::Result EVENTS_ALL__; 

謝謝。

回答

1

您忘記了TYPELIST<Ts ...>::Result前面的typename單詞。僅僅因爲你知道這是一種並不意味着編譯器知道它太(如果只!)。

+0

哦... :(我偷懶用GCC提示錯誤信息忘記了'typename'的新版本。謝謝馬修。 – 2012-02-27 11:22:48