Variadic模板+静态数组

时间:2017-12-15 13:08:59

标签: c++11 variadic-templates

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

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

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

现在我得到了:

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

我无法弄清楚如何使用给定类型列表中的每个ETypeID::Value来提供静态数组。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:3)

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

live example on wandbox

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

  • sizeof...(TypeList)评估TypeList...

  • 中的元素数量
  • 对于TypeList = {A, B, C}TypeList::Value...扩展为:A::Value, B::Value, C::Value