This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 119a. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2025-12-20
[Moved to DR at the April, 2013 meeting.]
According to 9.5 [dcl.init] paragraph 7,
Tovalue-initialize an object of typeT means:
ifT is a (possibly cv-qualified) class type (Clause 11 [class]) with either no default constructor(11.4.5 [class.ctor]) or a default constructor that isuser-provided or deleted, then the object is default-initialized;
ifT is a (possibly cv-qualified) non-union class type without auser-provided or deleted default constructor, then the object iszero-initialized and, ifT has a non-trivial default constructor,default-initialized;
ifT is an array type, then each element is value-initialized;
otherwise, the object is zero-initialized.
In an example like
union U { int a = 5; }; int main() { return U().a; }this means that the value returned is0, because none of thefirst three bullets apply. Should the “non-union”restriction be dropped from the second bullet?
Proposed resolution (October, 2012):
Change 9.5 [dcl.init] paragraph 7 as follows:
Tovalue-initialize an object of typeT means:
...
ifT is a (possibly cv-qualified)
non-unionclass type without a user-provided or deleted default constructor,then the object is zero-initialized and, ifT has anon-trivial default constructor, default-initialized;...