This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 110b. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.

2023-01-15


1631. Incorrect overload resolution for single-element initializer-list

Section: 12.2.4.2.6  [over.ics.list]     Status: CD4     Submitter: Johannes Schaub     Date: 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:

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 of issue 1467.