以下代码无法使用Visual Studio 2013编译,但应该:
class A
{
A() :m_array{ 0, 1, 2 } {} // error C2536: 'A::A::m_array' : cannot specify explicit initializer for arrays
private:
int m_array[3];
};
有关详细信息,请参阅bug report。
有哪些可行的解决方法?
答案 0 :(得分:10)
作为评论,您可以尝试这种解决方法。
class A
{
A() : m_array ({ 0, 1, 2 }) {}
private:
std::array<int, 3> m_array;
};
似乎VS2013很好地为std::array
构造函数创建了初始化列表,你可以在构造函数的初始化器中初始化它。您编写的代码有效,gcc和clang都支持它。 VS2013缺乏。