我想使用 std::initializer_list
初始化基类。
struct A : public std::array<int, 4>
{
// This constructor works fine
A()
: std::array<int, 4>{{ 1, 2, 3, 4 }}
{
}
// THIS CONSTRUCTOR FAILS TO COMPILE
A(std::initializer_list<int> il)
: std::array<int, 4>{il}
{
}
};
第二个构造函数的 GCC 错误是
error: array must be initialized with a brace-enclosed initializer
我想要的是像这样用initializer_list初始化新的A实例
A var{{ 1, 2, 3, 4 }}
并将其传递给基类。
最佳答案
类 std::array
没有采用 std::initializer_list
的构造函数。
你唯一的方法就是这样做:
#include <array>
#include <initializer_list>
struct A : public std::array<int, 4>
{
A()
: std::array<int, 4>{{ 1, 2, 3, 4 }}
{
}
A(std::array<int, 4> il)
: std::array<int, 4>(il)
{
}
};
int main ()
{
A a ({{ 1, 2, 3, 4 }});
}
关于c++ - 初始化列表中的initializer_list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23038080/