Wrap Loki ::使用C ++ 11可变参数模板的Typelist

时间:2012-02-27 10:44:42

标签: 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__;

谢谢。

1 个答案:

答案 0 :(得分:1)

您忘记了typename前面的TYPELIST<Ts ...>::Result字词。仅仅因为你知道它是一种类型并不意味着编译器也知道它(如果只是!)。