9

次のコードは、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];
};

詳細については、バグ レポートを参照してください。

可能な回避策は何ですか?

4

1 に答える 1

11

コメントとして、この回避策を試すことができます。

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

VS2013はstd::arrayコンストラクターの初期化リストをうまく作成したようで、コンストラクターの初期化子で初期化できます。あなたが書いたコードは有効で、gcc と clang の両方がそれをサポートしています。VS2013にはありません。

于 2013-11-10T13:24:39.837 に答える