2011-08-24

explicitデフォルトコンストラクターと空の初期化リスト

規格を読む限り、explicitデフォルトコンストラクターを持つクラスを、空の初期化リストでリスト初期化できると思う。

12.3.1 [class.conv.ctor] p2

A default constructor may be an explicit constructor; such a constructor will be used to perform default-initialization or value-initialization (8.5).

とあり、デフォルト初期化か値初期化が可能である。また、リスト初期化で初期化リストが空の場合、

8.5.4 [dcl.init.list] p3

If the initializer list has no elements and T is a class type with a default constructor, the object is value-initialized.

単にデフォルトコンストラクターと言っているので、explicitかどうかは問わないはずだ。

No comments: