<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Issue 2271: regex_traits::lookup_classname specification unclear</title>
<meta property="og:title" content="Issue 2271: regex_traits::lookup_classname specification unclear">
<meta property="og:description" content="C++ library issue. Status: C++14">
<meta property="og:url" content="https://cplusplus.github.io/LWG/issue2271.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="2271"><a href="lwg-defects.html#2271">2271</a>. <code>regex_traits::lookup_classname</code> specification unclear</h3>
<p><b>Section:</b> 28.6.6 <a href="https://wg21.link/re.traits">[re.traits]</a> <b>Status:</b> <a href="lwg-active.html#C++14">C++14</a>
 <b>Submitter:</b> Jonathan Wakely <b>Opened:</b> 2013-07-02 <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#re.traits">issues</a> in [re.traits].</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>
28.6.6 <a href="https://wg21.link/re.traits">[re.traits]</a> p9 says that <code>regex_traits::lookup_classname</code> should
return a value that compares equal to 0, but there is no requirement
that a bitmask type is equality comparable with 0, e.g. 16.3.3.3.3 <a href="https://wg21.link/bitmask.types">[bitmask.types]</a> says bitmask types 
can be implemented using <code>std::bitset</code>.
<p/>
Either there should be an additional requirement on the type or the function definition should be fixed.
</p>

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

<p>
Stefanus: Resolution looks good, doesn't seem to need fixing anywhere else from a quick look through the draft.
<p/>
Any objection to Ready?
<p/>
No objection.
<p/>
Action: Move to Ready. </p>


<p id="res-2271"><b>Proposed resolution:</b></p>

<p>This wording is relative to N3691.</p>

<ol>
<li><p>Edit 28.6.6 <a href="https://wg21.link/re.traits">[re.traits]</a> p9:</p>

<blockquote>
<pre>
template &lt;class ForwardIterator&gt;
  char_class_type lookup_classname(
    ForwardIterator first, ForwardIterator last, bool icase = false) const;
</pre>
<blockquote>
<p>
-9- <i>Returns:</i> an unspecified value that represents the character classification named by the character
sequence designated by the iterator range <code>[first,last)</code>. If the parameter <code>icase</code> is true then the
returned mask identifies the character classification without regard to the case of the characters being
matched, otherwise it does honor the case of the characters being matched. The value returned shall
be independent of the case of the characters in the character sequence. If the name is not recognized
then returns <del>a value that compares equal to 0</del><ins><code>char_class_type()</code></ins>.
</p>
</blockquote>
</blockquote>
</li>
</ol>






</body>
</html>
