2012-02-27 73 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

相关问题