Workaround for error C2536: cannot specify explici

2019-01-12 00:36发布

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?

1条回答
Luminary・发光体
2楼-- · 2019-01-12 01:21

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.

查看更多
登录 后发表回答