<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Issue 2194: Impossible container requirements for adaptor types</title>
<meta property="og:title" content="Issue 2194: Impossible container requirements for adaptor types">
<meta property="og:description" content="C++ library issue. Status: C++14">
<meta property="og:url" content="https://cplusplus.github.io/LWG/issue2194.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#C++14">C++14</a> status.</em></p>
<h3 id="2194"><a href="lwg-defects.html#2194">2194</a>. Impossible container requirements for adaptor types</h3>
<p><b>Section:</b> 23.6 <a href="https://wg21.link/container.adaptors">[container.adaptors]</a> <b>Status:</b> <a href="lwg-active.html#C++14">C++14</a>
 <b>Submitter:</b> Sebastian Mach <b>Opened:</b> 2012-10-05 <b>Last modified:</b> 2016-01-28</p>
<p><b>Priority: </b>Not Prioritized
</p>
<p><b>View all other</b> <a href="lwg-index.html#container.adaptors">issues</a> in [container.adaptors].</p>
<p><b>View all issues with</b> <a href="lwg-status.html#C++14">C++14</a> status.</p>
<p><b>Discussion:</b></p>

<p>
The <code>stack</code> class template does not have an member type <code>iterator</code>, and therefore instantiations do not 
meet the general container requirements as described in 23.2.2 <a href="https://wg21.link/container.requirements.general">[container.requirements.general]</a>. But 
23.6.1 <a href="https://wg21.link/container.adaptors.general">[container.adaptors.general]</a> p1 says:
</p>
<blockquote><p>
The headers <code>&lt;queue&gt;</code> and <code>&lt;stack&gt;</code> define the container adaptors <code>queue</code>, 
<code>priority_queue</code>, and <code>stack</code>. These container adaptors meet the requirements for sequence containers.
</p></blockquote>
<p>
Since sequence containers is a subset of general containers, this imposes requirements on the container adaptors that
are not satisfied.
</p>
<p>
<u>Daniel Kr&uuml;gler</u>: The wording change was performed as an editorial reorganization as requested
by <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3296.html#GB116">GB 116</a> occuring first in
<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf">N3242</a>, as a side-effect it 
does now make the previous implicit C++03 classification to [lib.sequences]/1 more obvious. As the NB comment
noticed, the adaptors really are not sequences nor containers, so this wording needs to be fixed.
The most simple way to realize that is to strike the offending sentence.
</p>

<p><i>[
Daniel adds concrete wording.
]</i></p>


<p><i>[2013-04-20, Bristol]</i></p>


<p>
Unanimous consensus that <code>queue</code> and <code>stack</code> are not meant to be sequences.
<p/>
Decision: move to tentatively ready 
</p>

<p><i>[2013-09-29, Chicago]</i></p>


<p>
Apply to Working Paper
</p>


<p id="res-2194"><b>Proposed resolution:</b></p>
<p>This wording is relative to N3376.</p>

<ol>
<li><p>Change 23.6.1 <a href="https://wg21.link/container.adaptors.general">[container.adaptors.general]</a> p1 as indicated:</p>
<blockquote><p>
-1- The headers <code>&lt;queue&gt;</code> and <code>&lt;stack&gt;</code> define the container adaptors <code>queue</code>, 
<code>priority_queue</code>, and <code>stack</code>. <del>These container adaptors meet the requirements for sequence containers.</del>
</p></blockquote>
</li>
</ol>






</body>
</html>
