<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<TITLE>
    CWG Issue 1170</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="1170"></A><H4>1170.
  
Access checking during template argument deduction
</H4>
<B>Section: </B>13.10.3&#160; [<A href="https://wg21.link/temp.deduct">temp.deduct</A>]
 &#160;&#160;&#160;

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

 <B>Submitter: </B>Adamczyk
 &#160;&#160;&#160;

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


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

<P>According to 13.10.3 [<A href="https://wg21.link/temp.deduct#8">temp.deduct</A>] paragraph 8,</P>

<BLOCKQUOTE>

Access checking is not done as part of the substitution
process.  Consequently, when deduction succeeds, an access
error could still result when the function is instantiated.

</BLOCKQUOTE>

<P>This mimics the way access checking is done in overload
resolution.  However, experience has shown that this exemption
of access errors from deduction failure significantly complicates
the Standard library, so this rule should be changed.</P>

<P><B>Proposed resolution (January, 2011):</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 if written using the substituted arguments.
<INS>[<I>Note:</I></INS> Access checking is <DEL>not</DEL> done as
part of the substitution process.  <INS>&#8212;<I>end note</I>]</INS>
<DEL>Consequently, when deduction succeeds, an access error could still
result when the function is instantiated.</DEL>  Only invalid types...

</BLOCKQUOTE>

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