<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<TITLE>
    CWG Issue 2793</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="2793"></A><H4>2793.
  
Block-scope declaration conflicting with parameter name
</H4>
<B>Section: </B>6.4.3&#160; [<A href="https://wg21.link/basic.scope.block">basic.scope.block</A>]
 &#160;&#160;&#160;

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

 <B>Submitter: </B>Jason Merrill
 &#160;&#160;&#160;

 <B>Date: </B>2023-08-31<BR>


<P>[Accepted as a DR at the November, 2023 meeting.]</P>



<P>Consider:</P>

<PRE>
  void f(int i) { extern int i; } 
</PRE>

<P>According to 6.4.3 [<A href="https://wg21.link/basic.scope.block#2">basic.scope.block</A>] paragraph 2, the target scope
of the declaration is relevant (which would be the global scope), but
not the scope in which the name is bound.  That seems wrong. For
comparison, template parameter names use the latter rule
(13.8.2 [<A href="https://wg21.link/temp.local#6">temp.local</A>] paragraph 6).</P>

<P><B>Proposed resolution (approved by CWG 2023-09-15):</B></P>

<BLOCKQUOTE>

If a declaration that is not a name-independent declaration
and <DEL>whose target scope is</DEL> <INS>that binds a name in</INS>
the block scope S of a
<UL>
<LI>
<I>compound-statement</I> of
a <I>lambda-expression</I>, <I>function-body</I>,
or <I>function-try-block</I>,</LI>
<LI>substatement of  a selection  or iteration  statement that  is not
itself a selection or iteration statement, or</LI>
<LI>handler of a <I>function-try-block</I>
</LI>
</UL>
potentially conflicts with a declaration whose target scope is the
parent scope of S, the program is ill-formed.

</BLOCKQUOTE>

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