【问题标题】:Variadic Template + static array可变参数模板 + 静态数组
【发布时间】:2017-12-15 21:52:56
【问题描述】:

在这里,我得到了一个带有可变参数类参数的模板类,每个类都有自己的 id 来自枚举值,例如:

struct A
    {
        enum ETypeID
        { 
            Value = 244
        };
    };

(其他一些类的模式相同)

现在我得到了:

template<typename TypeList...>
struct TClass
{
    static int _IDs[sizeof(TypeList)...];
};

我不知道如何使用给定类型列表中的每个 ETypeID::Value 来提供静态数组。

任何帮助将不胜感激

【问题讨论】:

    标签: c++11 variadic-templates


    【解决方案1】:
    template<typename... TypeList>
    struct TClass
    {
        constexpr static int _IDs[sizeof...(TypeList)] = {TypeList::Value...};
    };
    

    live example on wandbox


    • 就地static数据成员初始化需要constexpr

    • sizeof...(TypeList) 计算为 TypeList... 包中的元素数

    • 对于TypeList = {A, B, C},TypeList::Value... 扩展为:A::Value, B::Value, C::Value

    【讨论】:

      猜你喜欢
      • 2011-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-01
      • 1970-01-01
      相关资源
      最近更新 更多