我正在制作一个派生自std::array
. 很明显,构造函数不继承,它负责大括号初始化;例如:
template<typename T, size_t size>
struct foo : std::array<T,size>
{
foo(int a, int b)
: std::array<T,size>{a,b}
{
//nothing goes here since constructor is just a dummy that
//forwards all arguments to std::array constructor
}
}
int main()
{
foo<int,2> myobj = {1,2}; //brace initialization calls custom constructor with inner elements as arguments
}
参数的数量必须完全匹配,所以我倾向于在构造函数中使用可变参数函数参数(因为我不仅每次都在数组中使用 2 个元素)。使用它,我将如何将可变参数包转发给std::array
构造函数?我对其他允许转发到std::array
构造函数的大括号初始化方法持开放态度。
注意:std::initializer_list
需要运行时初始化,我正在寻找一种编译时间/constexpr 兼容的方法。谢谢你。