CWG Issue 1631 (original) (raw)
This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 118e. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2025-11-05
1631. Incorrect overload resolution for single-element initializer-list
Section: 12.2.4.2.6 [over.ics.list]Status: CD4Submitter: Johannes SchaubDate: 2013-03-03
[Moved to DR at the November, 2014 meeting.]
According to bullet 1 of 12.2.4.2.6 [over.ics.list] paragraph 6,
Otherwise, if the parameter type is not a class:
- if the initializer list has one element, the implicit conversion sequence is the one required to convert the element to the parameter type;
- ...
This wording ignores the possibility that the element might be an initializer list (as opposed to an expression with a type, as illustrated in the example). This oversight affects an example like:
struct A { int a[1]; }; struct B { B(int); }; void f(B, int); void f(int, A);
int main() { f({0}, {{1}}); }
Proposed resolution (June, 2014):
This issue is resolved by the resolution ofissue 1467.