<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<TITLE>
    CWG Issue 2341</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="2341"></A><H4>2341.
  
Structured bindings with static storage duration
</H4>
<B>Section: </B>9.1&#160; [<A href="https://wg21.link/dcl.pre">dcl.pre</A>]
 &#160;&#160;&#160;

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

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

 <B>Date: </B>2017-04-04<BR>


<P>[Accepted at the February, 2019 meeting as part of paper P1091R3.]</P>

<P>According to 9.1 [<A href="https://wg21.link/dcl.pre#8">dcl.pre</A>] paragraph 8,</P>

<BLOCKQUOTE>

A <I>simple-declaration</I> with an <I>identifier-list</I> is
called a <I>structured binding declaration</I>
(9.7 [<A href="https://wg21.link/dcl.struct.bind">dcl.struct.bind</A>]). The <I>decl-specifier-seq</I> shall
contain only the <I>type-specifier</I> <TT>auto</TT>
(9.2.9.7 [<A href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</A>]) and <I>cv-qualifier</I>s.

</BLOCKQUOTE>

<P>This precludes block-scope structured bindings of static
storage duration. However, namespace-scope structured bindings
are permitted, and since those have static storage duration,
it seems inconsistent to prohibit them at block scope. This
restriction also prohibits inline structured bindings, which
could be useful.</P>

<P>On the other hand, allowing storage class specifiers raises
the question of to what extent they apply to the bindings as
opposed to the container variable. That's subtle, because in
two out of three cases, the bindings are not variables.</P>

<P>A related issue is that the linkage of structured bindings
at namespace scope is not specified.</P>

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