struct MyClass
{
std::array<int, 10> stdArr;
MyClass() : stdArr()
{}
};
MyClass c;
質問:
c.stdArr
ゼロ初期化されていますか?- はいの場合 - なぜですか?
私自身の矛盾した答え:
ゼロで初期化されています:
std::array
C 配列のように動作したいです。上記の例stdArr
が c-array の場合stdArr()
、初期化リストでゼロ初期化されます。member()
初期化リスト内に書き込むと、オブジェクトが初期化されると思います。ゼロで初期化されていません:
std::array
通常、私の場合は単一のメンバーがいますint[10] _Elems;
- 通常、基本型および基本型の配列は、
int[N]
デフォルトで初期化されません。 std::array
デフォルトで構築されていることを意味する集約型です。- を初期化するカスタムコンストラクターがないため
_Elems
、ゼロ初期化されていないと思います。
std::array
C++11 標準に従った正しい動作は何ですか?