<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Issue 4292: Unordered container local iterators should be constexpr iterators</title>
<meta property="og:title" content="Issue 4292: Unordered container local iterators should be constexpr iterators">
<meta property="og:description" content="C++ library issue. Status: Tentatively Ready">
<meta property="og:url" content="https://cplusplus.github.io/LWG/issue4292.html">
<meta property="og:type" content="website">
<meta property="og:image" content="http://cplusplus.github.io/LWG/images/cpp_logo.png">
<meta property="og:image:alt" content="C++ logo">
<style>
  p {text-align:justify}
  li {text-align:justify}
  pre code.backtick::before { content: "`" }
  pre code.backtick::after { content: "`" }
  blockquote.note
  {
    background-color:#E0E0E0;
    padding-left: 15px;
    padding-right: 15px;
    padding-top: 1px;
    padding-bottom: 1px;
  }
  ins {background-color:#A0FFA0}
  del {background-color:#FFA0A0}
  table.issues-index { border: 1px solid; border-collapse: collapse; }
  table.issues-index th { text-align: center; padding: 4px; border: 1px solid; }
  table.issues-index td { padding: 4px; border: 1px solid; }
  table.issues-index td:nth-child(1) { text-align: right; }
  table.issues-index td:nth-child(2) { text-align: left; }
  table.issues-index td:nth-child(3) { text-align: left; }
  table.issues-index td:nth-child(4) { text-align: left; }
  table.issues-index td:nth-child(5) { text-align: center; }
  table.issues-index td:nth-child(6) { text-align: center; }
  table.issues-index td:nth-child(7) { text-align: left; }
  table.issues-index td:nth-child(5) span.no-pr { color: red; }
  @media (prefers-color-scheme: dark) {
     html {
        color: #ddd;
        background-color: black;
     }
     ins {
        background-color: #225522
     }
     del {
        background-color: #662222
     }
     a {
        color: #6af
     }
     a:visited {
        color: #6af
     }
     blockquote.note
     {
        background-color: rgba(255, 255, 255, .10)
     }
  }
</style>
</head>
<body>
<hr>
<p><em>This page is a snapshot from the LWG issues list, see the <a href="lwg-active.html">Library Active Issues List</a> for more information and the meaning of <a href="lwg-active.html#Ready">Tentatively Ready</a> status.</em></p>
<h3 id="4292"><a href="lwg-active.html#4292">4292</a>. Unordered container local iterators should be constexpr iterators</h3>
<p><b>Section:</b> 23.5.3.1 <a href="https://wg21.link/unord.map.overview">[unord.map.overview]</a>, 23.5.4.1 <a href="https://wg21.link/unord.multimap.overview">[unord.multimap.overview]</a>, 23.5.6.1 <a href="https://wg21.link/unord.set.overview">[unord.set.overview]</a>, 23.5.7.1 <a href="https://wg21.link/unord.multiset.overview">[unord.multiset.overview]</a> <b>Status:</b> <a href="lwg-active.html#Ready">Tentatively Ready</a>
 <b>Submitter:</b> Jonathan Wakely <b>Opened:</b> 2025-07-10 <b>Last modified:</b> 2025-08-29</p>
<p><b>Priority: </b>Not Prioritized
</p>
<p><b>View all issues with</b> <a href="lwg-status.html#Tentatively Ready">Tentatively Ready</a> status.</p>
<p><b>Discussion:</b></p>
<p>
The intent of <a href="https://wg21.link/P3372R3" title=" constexpr containers and adapters">P3372R3</a> was for all container iterators to be
constexpr iterators, but during application of the paper to the working draft
it was observed that unordered containers don't say it for their
local iterators.
</p>

<p><i>[2025-08-29; Reflector poll]</i></p>

<p>
Set status to Tentatively Ready after eight votes in favour during reflector poll.
</p>



<p id="res-4292"><b>Proposed resolution:</b></p>
<p>
This wording is relative to <a href="https://wg21.link/N5008" title=" Working Draft, Programming Languages — C++">N5008</a>.
</p>

<ol>

<li><p>Modify 23.5.3.1 <a href="https://wg21.link/unord.map.overview">[unord.map.overview]</a> as indicated:</p>
<blockquote>
<p>-4-
The types <code class='backtick'>iterator</code><ins>,</ins> <del>and</del> <code class='backtick'>const_iterator</code><ins>,
<code class='backtick'>local_iterator</code>, and <code class='backtick'>const_local_iterator</code></ins>
meet the constexpr iterator requirements
(24.3.1 <a href="https://wg21.link/iterator.requirements.general">[iterator.requirements.general]</a>).
</p>
</blockquote>
</li>

<li><p>Modify 23.5.4.1 <a href="https://wg21.link/unord.multimap.overview">[unord.multimap.overview]</a> as indicated:</p>
<blockquote>
<p>-4-
The types <code class='backtick'>iterator</code><ins>,</ins> <del>and</del> <code class='backtick'>const_iterator</code><ins>,
<code class='backtick'>local_iterator</code>, and <code class='backtick'>const_local_iterator</code></ins>
meet the constexpr iterator requirements
(24.3.1 <a href="https://wg21.link/iterator.requirements.general">[iterator.requirements.general]</a>).
</p>
</blockquote>
</li>

<li><p>Modify 23.5.6.1 <a href="https://wg21.link/unord.set.overview">[unord.set.overview]</a> as indicated:</p>
<blockquote>
<p>-4-
The types <code class='backtick'>iterator</code><ins>,</ins> <del>and</del> <code class='backtick'>const_iterator</code><ins>,
<code class='backtick'>local_iterator</code>, and <code class='backtick'>const_local_iterator</code></ins>
meet the constexpr iterator requirements
(24.3.1 <a href="https://wg21.link/iterator.requirements.general">[iterator.requirements.general]</a>).
</p>
</blockquote>
</li>

<li><p>Modify 23.5.7.1 <a href="https://wg21.link/unord.multiset.overview">[unord.multiset.overview]</a> as indicated:</p>
<blockquote>
<p>-4-
The types <code class='backtick'>iterator</code><ins>,</ins> <del>and</del> <code class='backtick'>const_iterator</code><ins>,
<code class='backtick'>local_iterator</code>, and <code class='backtick'>const_local_iterator</code></ins>
meet the constexpr iterator requirements
(24.3.1 <a href="https://wg21.link/iterator.requirements.general">[iterator.requirements.general]</a>).
</p>
</blockquote>
</li>

</ol>






</body>
</html>
