c++ - 使用 C++11 可变参数模板包装 Loki::Typelist

标签 c++ metaprogramming variadic-templates

我试图避免使用 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/

相关文章:

C++模板非类型参数类型推导

java - Java Classloader 能否重写系统类(仅它们的副本)的字节码?

c++ - 如何通过参数包传递引用?

c++ - C++11 中的示例函数处理时间装饰器

c++ - 为什么在 C++11 中的类型参数包之后不允许使用整数值参数包?

c++ - 调试 InProc COM Dll

c++ - 反转字符串函数 C++

objective-c - 如何在 Objective-C 中确定我的方法的 "caller"?

C++捕获命令行逐行输入和输出

c++ - 未定义对 'boost::system::generic_category()' 的引用?