我想实现类似的目标:
#include <string>
#include <array>
enum class MyEnum{
A,
B,
C
};
template<MyEnum... Args>
class MyClass{
public:
MyClass()
{
}
private:
std::array<MyEnum, sizeof...(Args)> array;
};
现在我有一个数组,可以保存所有传递给模板值的数组。但是如何使用模板参数填充此数组?
答案 0 :(得分:6)
如果你想要的是将所有MyEnum
值放入array
,那么你可以将它们解压缩到初始化列表中并用它初始化 通过直接初始化来初始化:array
MyClass() : array {{ Args... }} { }
但是,您需要一个相当新的编译器才能使用此语法。
感谢Xeo纠正我的回答。
答案 1 :(得分:1)
MyClass()
{
std::initializer_list<MyEnum> il( {Args...} );
std::copy (il.begin(), il.end(), array.begin());
}