<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<TITLE>
    CWG Issue 1616</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="1616"></A><H4>1616.
  
Disambiguation parsing and template parameters
</H4>
<B>Section: </B>8.11&#160; [<A href="https://wg21.link/stmt.ambig">stmt.ambig</A>]
 &#160;&#160;&#160;

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

 <B>Submitter: </B>Johannes Schaub
 &#160;&#160;&#160;

 <B>Date: </B>2013-02-01<BR>


<P>[Accepted at the November, 2020 meeting as part of paper P1787R6 and
moved to DR at the February, 2021 meeting.]</P>



<P>According to 8.11 [<A href="https://wg21.link/stmt.ambig#3">stmt.ambig</A>] paragraph 3,</P>

<BLOCKQUOTE>

The disambiguation is purely syntactic; that is, the meaning of the names
occurring in such a statement, beyond whether they are <I>type-name</I>s or
not, is not generally used in or changed by the disambiguation. Class
templates are instantiated as necessary to determine if a qualified name is
a <I>type-name</I>. Disambiguation precedes parsing, and a statement
disambiguated as a declaration may be an ill-formed declaration. If, during
parsing, a name in a template parameter is bound differently than it would
be bound during a trial parse, the program is ill-formed. No diagnostic is
required. [<I>Note:</I> This can occur only when the name is declared
earlier in the declaration. &#8212;<I>end note</I>]

</BLOCKQUOTE>

<P>The statement about template parameters is confusing (and not helped by
the fact that the example that follows illustrates the general rule for
declarations and does not involve any template parameters).  It is
attempting to say that a program is ill-formed if a template argument of a
class template specialization has a different value in the two parses.
With <TT>decltype</TT> this can now apply to other kinds of templates as
well, so the wording should be clarified and made more general.</P>

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