C++ 错误C2536的解决方法:无法在Visual Studio 2013中为数组指定显式初始值设定项

C++ 错误C2536的解决方法:无法在Visual Studio 2013中为数组指定显式初始值设定项,c++,visual-studio,c++11,C++,Visual Studio,C++11,以下代码不使用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]; }; 有关更多详细信息,请参阅 可能的解决方法是什么?作为评论,您可以尝试此解决方法 class A { A() : m

以下代码不使用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];
};
有关更多详细信息,请参阅


可能的解决方法是什么?作为评论,您可以尝试此解决方法

class A
{
    A() : m_array ({ 0, 1, 2 }) {}
private:
    std::array<int, 3> m_array;
};
A类
{
A():m_数组({0,1,2}){
私人:
std::数组m_数组;
};

VS2013似乎很好地创建了
std::array
构造函数的初始化器列表,您可以在构造函数的初始化器中初始化它。您编写的代码是有效的,gcc和clang都支持它。VS2013缺少。

在声明点进行初始化是否有效<代码>int m_数组[3]{1,2,3}?std::array工作吗?(你需要额外的大括号,除非编译器在C++14上抢先一步)。@juanchopanza:与VC++2013相同的错误。将数组声明为
std::array m_array
并将其初始化为
A():m_数组({0,1,2}){}
。它是否有效?@galop1n OP要求解决这个问题。我必须在构造函数中使用一对额外的大括号,以便在VS2013中编译。A():m_数组({{0,1,2}})