This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 115d. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2024-10-26
[Adopted as a DR at the November, 2019 meeting.]
(From editorial issue 3235.)
According to 12.2.3 [over.match.viable] bullet 2.3 says,
First, to be a viable function, a candidate function shall have enough parameters to agree in number with the arguments in the list.
...
A candidate function having more than m parameters is viable only if the (m+1)st parameter has a default argument (9.3.4.7 [dcl.fct.default]). [Footnote: According to 9.3.4.7 [dcl.fct.default], parameters following the (m+1)st parameter must also have default arguments. —end footnote] For the purposes of overload resolution, the parameter list is truncated on the right, so that there are exactly m parameters.
However, this is incorrect; 9.3.4.7 [dcl.fct.default] paragraph 4 permits parameter packs to follow parameters with default arguments.
Proposed resolution (October, 2019):
Change 12.2.3 [over.match.viable] bullet 2.3 as follows:
A candidate function having more than m parameters is viable only if
the (m+1)st parameter has a default argument (9.3.4.7 [dcl.fct.default]). [Footnote: According to 9.3.4.7 [dcl.fct.default], parameters following the (m+1)st parameter must also have default arguments. —end footnote]all parameters following the mth have default arguments (9.3.4.7 [dcl.fct.default]). For the purposes of overload resolution, the parameter list is truncated on the right, so that there are exactly m parameters.