<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<TITLE>
    CWG Issue 1462</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="1462"></A><H4>1462.
  
Deduction failure vs &#8220;ill-formed, no diagnostic required&#8221;
</H4>
<B>Section: </B>13.10.3&#160; [<A href="https://wg21.link/temp.deduct">temp.deduct</A>]
 &#160;&#160;&#160;

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

 <B>Submitter: </B>John Spicer
 &#160;&#160;&#160;

 <B>Date: </B>2012-02-08<BR>


<P>[Moved to DR at the April, 2013 meeting.]</P>

<P>The relationship between errors that render a program ill-formed
but for which no diagnostic is required and things that cause deduction
failure is not clearly specified.  Presumably failures that need not
be diagnosed cannot be the basis for SFINAE, lest different implementations
perform deduction differently depending on how thoroughly they handle
such cases.  This should be spelled out explicitly.</P>

<P><B>Proposed resolution (October, 2012):</B></P>

<P>Change 13.10.3 [<A href="https://wg21.link/temp.deduct#8">temp.deduct</A>] paragraph 8 as follows:</P>

<BLOCKQUOTE>

If a substitution results in an invalid type or expression, type
deduction fails. An invalid type or expression is one that would be
ill-formed<INS>, with a diagnostic required,</INS> if written using
the substituted arguments. [<I>Note:</I> <INS>If no diagnostic is
required, the program is still ill-formed.</INS> Access checking is
done as part of the substitution process.  &#8212;<I>end note</I>]
Only invalid types and expressions...

</BLOCKQUOTE>

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