2

我想实现这样的目标:

#include <string>
#include <array>

enum class MyEnum{
  A,
  B,
  C
};

template<MyEnum... Args>   
class MyClass{
  public:
    MyClass()
    {
    }
  private:
    std::array<MyEnum, sizeof...(Args)> array;   
};

现在我有一个数组,它可以保存所有传递给模板的值。但是我怎样才能用模板参数填充这个数组呢?

4

2 回答 2

6

如果您想要将所有MyEnum值放入array,那么您可以将它们解压缩到初始化列表中并array使用它 进行初始化,并使用直接初始化对其进行初始化

MyClass() : array {{ Args... }} { }

但是,您需要一个相当新的编译器才能使用这种语法。

感谢 Xeo 纠正我的答案。

于 2012-04-28T16:12:23.817 回答
0
MyClass()
{
    std::initializer_list<MyEnum> il( {Args...} );
    std::copy (il.begin(), il.end(), array.begin());
}
于 2012-04-28T16:42:25.357 回答