【问题标题】:Wrap Loki::Typelist with C++11 variadic template用 C++11 可变参数模板包装 Loki::Typelist
【发布时间】:2012-02-27 10:44:41
【问题描述】:

我试图避免使用 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&lt;Ts...&gt;::Result 是一种类型。它有什么问题? GCC 4.6.2 在这里。

我想这样使用它:

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

谢谢。

【问题讨论】:

    标签: c++ metaprogramming variadic-templates


    【解决方案1】:

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

    【讨论】:

    • 哦...:(我懒得使用新版本的 GCC,建议在错误消息中忘记 typename。谢谢 Matthieu。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 2016-11-12
    • 2020-07-31
    • 1970-01-01
    • 2015-09-20
    相关资源
    最近更新 更多