错误C2536的解决方法:无法在Visual Studio 2013中为数组指定显式初始化程序

时间:2013-11-09 15:41:36

标签: 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];
};

有关详细信息,请参阅bug report

有哪些可行的解决方法?

1 个答案:

答案 0 :(得分:10)

作为评论,您可以尝试这种解决方法。

class A
{
    A() : m_array ({ 0, 1, 2 }) {}
private:
    std::array<int, 3> m_array;
};

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