我试图避免使用 LOKI_TYPELIST_n 宏,所以我可以编写简单的 Loki::Typelist 包装器。
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__;
谢谢。
最佳答案
您忘记了 typename
TYPELIST<Ts ...>::Result
前面的字.仅仅因为您知道它是一种类型并不意味着编译器也知道它(如果有的话!)。
关于c++ - 使用 C++11 可变参数模板包装 Loki::Typelist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9463659/