段落8.5p7で8.5.p7といくつかの説明が必要:T型のオブジェクトの値が初期化C++ 11標準状態のC++ 11標準
することを意味:
Tがユーザ提供のコンストラクタ (12.1)を持つ(おそらくcv修飾された)クラス型(9節)である場合、Tのデフォルトのコンストラクタが呼び出されます(Tが持つ場合は の初期化は不正です)。アクセシブルなデフォルトはありません コンストラクタ);
Tは、ユーザー提供のコンストラクタなし(おそらくCV修飾)非組合クラス型 ある場合、そのオブジェクトは Tの暗黙的に宣言されたデフォルトコンストラクタ が非であれば、ゼロを初期化していますそのコンストラクタが呼び出されます。
Tが配列タイプの場合、 各要素は値で初期化されます。
その他の場合、オブジェクトはゼロ初期化された です。
は、私は上記の太字で文字を理解する問題を抱えています。 Tの暗黙的なデフォルトのコンストラクタの追加の呼び出しがゼロ初期化を変更する方法は、この場合発生しましたか?
+1かなりクリア – Belloc
VC++ではこれが正しく実装されていないことに注意してください。 C++ 98では初期化ルールが異なり、VC++でもまだそれらを実装しています。 [バグレポート](http://connect.microsoft.com/VisualStudio/feedback/details/746973/incorrect-c-11-value-initialization-for-type-with-implicitly-declared-but-non-trivial-default -constructor) – bames53
これは私にはちょっと時間がかかりましたが、暗黙的/デフォルトのctorsが非暗黙のベースctorを呼び出すかもしれないという事実が鍵です。私の+1 –