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