Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Workaround for error C2536: cannot specify explicit initializer for arrays in Visual Studio 2013

the following code does not compile with Visual Studio 2013 while it should:

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];
};

See bug report for more details.

What are the possible workarounds?

like image 853
Korchkidu Avatar asked Nov 09 '13 15:11

Korchkidu


1 Answers

As the comments, you can try this workaround.

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

It seems VS2013 made initializer-list for std::array constructor well and you can initialize it in constructor's intializer. The code that you wrote is valid and both gcc and clang support it. VS2013 lacks.

like image 141
masoud Avatar answered Nov 01 '22 14:11

masoud