Created on 2009-04-08.00:00:00 last changed 189 months ago
[Voted into WP at October, 2009 meeting.]
Proposed resolution (July, 2009):
Change 9.5.5 [dcl.init.list] paragraph 4 as follows:
When an initializer list is implicitly converted to aAn object of type std::initializer_list<E> is constructed from an initializer list, the object passed is constructedas if the implementation allocated an array of N elements of type E, where N is the number of elements in the initializer list. Each element of that array is copy-initialized with the corresponding element of the initializer listconverted to E, and the std::initializer_list<E> object is constructed to refer to that array. If a narrowing conversion is required toconvert the element to Einitialize any of the elements, the program is ill-formed. [Example:...
There are several problems with the wording of 9.5.5 [dcl.init.list] paragraph 4:
When an initializer list is implicitly converted to a std::initializer_list<E>, the object passed is constructed as if the implementation allocated an array of N elements of type E, where N is the number of elements in the initializer list. Each element of that array is initialized with the corresponding element of the initializer list converted to E, and the std::initializer_list<E> object is constructed to refer to that array. If a narrowing conversion is required to convert the element to E, the program is ill-formed.
First, an initializer list is not an expression, so it is not appropriate to refer to “implicitly convert[ing]” it, as is done in the first sentence.
Also, the conversion of the elements of the initializer list to the elements of the array is not specified to be either copy-initialization or direct-initialization. If this is intended to be viewed as an aggregate initialization, it would be copy-initialization, but that needs to be specified more clearly.
Finally, the initializer list can have nested initializer lists, so the references to converting the element also need to be cleaned up.
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2010-03-29 00:00:00 | admin | set | status: dr -> cd2 |
| 2009-11-08 00:00:00 | admin | set | messages: + msg2463 |
| 2009-11-08 00:00:00 | admin | set | status: ready -> dr |
| 2009-08-03 00:00:00 | admin | set | messages: + msg2167 |
| 2009-08-03 00:00:00 | admin | set | status: open -> ready |
| 2009-04-08 00:00:00 | admin | create | |