<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Issue 2002: Class template match_results does not specify the semantics of operator==</title>
<meta property="og:title" content="Issue 2002: Class template match_results does not specify the semantics of operator==">
<meta property="og:description" content="C++ library issue. Status: Resolved">
<meta property="og:url" content="https://cplusplus.github.io/LWG/issue2002.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#Resolved">Resolved</a> status.</em></p>
<h3 id="2002"><a href="lwg-defects.html#2002">2002</a>. Class template <code>match_results</code> does not specify the semantics of <code>operator==</code></h3>
<p><b>Section:</b> 28.6.9.9 <a href="https://wg21.link/re.results.nonmember">[re.results.nonmember]</a> <b>Status:</b> <a href="lwg-active.html#Resolved">Resolved</a>
 <b>Submitter:</b> Daniel Kr&uuml;gler <b>Opened:</b> 2010-10-24 <b>Last modified:</b> 2016-01-28</p>
<p><b>Priority: </b>Not Prioritized
</p>
<p><b>View all issues with</b> <a href="lwg-status.html#Resolved">Resolved</a> status.</p>
<p><b>Discussion:</b></p>
<p>
The <em>Returns</em> element of <code>operator==</code> says:
</p>

<blockquote><p>
<code>true</code> only if the two objects refer to the same match
</p></blockquote>

<p>
It is not really clear what this means: The current specification would allow for an
implementation to return <code>true</code>, only if the address values of <code>m1</code> and
<code>m2</code> are the same. While this approach is unproblematic in terms of used operations 
this is also a bit unsatisfactory. With identity equality alone there seems to be no convincing
reason to provide this operator at all. It could for example also refer to an comparison based
on iterator values. In this case a user should better know that this will be done, because 
there is no guarantee at all that inter-container comparison of iterators 
is a feasible operation. This was a clear outcome of the resolution provided in 
<a href= "http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3066.html">N3066</a> 
for LWG issue <a href="lwg-closed.html#446" title="Iterator equality between different containers (Status: NAD Editorial)">446</a><sup><a href="https://cplusplus.github.io/LWG/issue446" title="Latest snapshot">(i)</a></sup>.
It could also mean that a character-based comparison of the individual <code>sub_match</code>
elements should be done - this would be equivalent to applying <code>operator==</code> to
the subexpressions, prefix and suffix.
</p>



<p id="res-2002"><b>Proposed resolution:</b></p>
<p>Addressed by paper <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3158.html">n3158</a>.</p>





</body>
</html>
