<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<TITLE>
    CWG Issue 262</TITLE>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<STYLE TYPE="text/css">
  INS { text-decoration:none; font-weight:bold; background-color:#A0FFA0 }
  .INS { text-decoration:none; background-color:#D0FFD0 }
  DEL { text-decoration:line-through; background-color:#FFA0A0 }
  .DEL { text-decoration:line-through; background-color: #FFD0D0 }
  @media (prefers-color-scheme: dark) {
    HTML { background-color:#202020; color:#f0f0f0; }
    A { color:#5bc0ff; }
    A:visited { color:#c6a8ff; }
    A:hover, a:focus { color:#afd7ff; }
    INS { background-color:#033a16; color:#aff5b4; }
    .INS { background-color: #033a16; }
    DEL { background-color:#67060c; color:#ffdcd7; }
    .DEL { background-color:#67060c; }
  }
  SPAN.cmnt { font-family:Times; font-style:italic }
</STYLE>
</HEAD>
<BODY>
<P><EM>This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21
  Core Issues List revision 118b.
  See http://www.open-std.org/jtc1/sc22/wg21/ for the official
  list.</EM></P>
<P>2025-09-28</P>
<HR>
<A NAME="262"></A><H4>262.
  
Default arguments and ellipsis
</H4>
<B>Section: </B>9.3.4.6&#160; [<A href="https://wg21.link/dcl.fct">dcl.fct</A>]
 &#160;&#160;&#160;

 <B>Status: </B>CD1
 &#160;&#160;&#160;

 <B>Submitter: </B>Jamie Schmeiser
 &#160;&#160;&#160;

 <B>Date: </B>13 Nov 2000<BR>


<P>[Voted into WP at April 2003 meeting.]</P>



<P>The interaction of default arguments and ellipsis is not clearly
spelled out in the current wording of the Standard.
9.3.4.7 [<A href="https://wg21.link/dcl.fct.default#4">dcl.fct.default</A>] paragraph 4 says,</P>

<BLOCKQUOTE>

In a given function declaration, all parameters subsequent to a
parameter with a default argument shall have default arguments
supplied in this or previous declarations.

</BLOCKQUOTE>

<P>Strictly speaking, ellipsis isn't a parameter, but this could
be clearer.  Also, in 9.3.4.6 [<A href="https://wg21.link/dcl.fct#2">dcl.fct</A>] paragraph 2,</P>

<BLOCKQUOTE>

If the <I>parameter-declaration-clause</I> terminates with an
ellipsis, the number of arguments shall be equal to or greater than
the number of parameters specified.

</BLOCKQUOTE>

<P>This could be interpreted to refer to the number of arguments
after the addition of default arguments to the argument list given
in the call expression, but again it could be clearer.</P>

<P><B>Notes from 04/01 meeting:</B></P>

<P>The consensus opinion was that an ellipsis is not a parameter
and that default arguments should be permitted preceding an
ellipsis.</P>

<P><B>Proposed Resolution (4/02):</B></P>

<P>Change the following sentence in 9.3.4.6 [<A href="https://wg21.link/dcl.fct#2">dcl.fct</A>] paragraph 2
from</P>
<BLOCKQUOTE>
If the <I>parameter-declaration-clause</I> terminates with an ellipsis, the
number of arguments shall be equal to or greater than the number of
parameters specified.
</BLOCKQUOTE>
<P>to</P>
<BLOCKQUOTE>
If the <I>parameter-declaration-clause</I> terminates with an ellipsis, the
number of arguments shall be equal to or greater than the number of
parameters that do not have a default argument.
</BLOCKQUOTE>

<P>As noted in the defect, section 9.3.4.7 [<A href="https://wg21.link/dcl.fct.default">dcl.fct.default</A>]
is correct but could be clearer.</P>

<P>In 9.3.4.7 [<A href="https://wg21.link/dcl.fct.default">dcl.fct.default</A>], add the following as the first line
of the example in paragraph 4.</P>
<PRE>
  void g(int = 0, ...);  // okay, ellipsis is not a parameter so it can follow
                         // a parameter with a default argument
</PRE>

<BR><BR>
</BODY>
</HTML>
