<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<TITLE>
    CWG Issue 1068</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="1068"></A><H4>1068.
  
Template aliases with default arguments and template parameter packs
</H4>
<B>Section: </B>13.2&#160; [<A href="https://wg21.link/temp.param">temp.param</A>]
 &#160;&#160;&#160;

 <B>Status: </B>C++11
 &#160;&#160;&#160;

 <B>Submitter: </B>Nikolay Ivchenkov
 &#160;&#160;&#160;

 <B>Date: </B>2010-03-27<BR>


<P>[Voted into the WP at the March, 2011 meeting.]</P>

<P>Since there appear to be no restrictions against it, it would
appear that default arguments and template parameter packs can be
used with template aliases just as with other templates.  If that
is the case, then, the current wording in 13.2 [<A href="https://wg21.link/temp.param#11">temp.param</A>] paragraph 11
requires adjustment:</P>

<BLOCKQUOTE>

If a <I>template-parameter</I> of a class template has a default
<I>template-argument</I>, each subsequent
<I>template-parameter</I> shall either have a default
<I>template-argument</I> supplied or be a template parameter
pack.  If a <I>template-parameter</I> of a class template is a
template parameter pack, it shall be the last
<I>template-parameter</I>.

</BLOCKQUOTE>

<P>Presumably these restrictions should also apply to template
aliases, but as written, they only apply to class templates.</P>

<P><B>Proposed resolution (January, 2011):</B></P>

<P>Change 13.2 [<A href="https://wg21.link/temp.param#11">temp.param</A>] paragraph 11 as follows:</P>

<BLOCKQUOTE>

If a <I>template-parameter</I> of a class template <INS>or alias
template</INS> has a default <I>template-argument</I>, each subsequent
<I>template-parameter</I> shall either have a default
<I>template-argument</I> supplied or be a template parameter pack.  If
a <I>template-parameter</I> of a primary class template <INS>or alias
template</INS> is a template parameter pack, it shall be the last
<I>template-parameter</I>.  [<I>Note:</I>...

</BLOCKQUOTE>

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