<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Issue 3379: "safe" in several library names is misleading</title>
<meta property="og:title" content="Issue 3379: &quot;safe&quot; in several library names is misleading">
<meta property="og:description" content="C++ library issue. Status: C++20">
<meta property="og:url" content="https://cplusplus.github.io/LWG/issue3379.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++20">C++20</a> status.</em></p>
<h3 id="3379"><a href="lwg-defects.html#3379">3379</a>. "<code>safe</code>" in several library names is misleading</h3>
<p><b>Section:</b> 25.2 <a href="https://wg21.link/ranges.syn">[ranges.syn]</a> <b>Status:</b> <a href="lwg-active.html#C++20">C++20</a>
 <b>Submitter:</b> Casey Carter <b>Opened:</b> 2020-01-21 <b>Last modified:</b> 2021-02-25</p>
<p><b>Priority: </b>1
</p>
<p><b>View other</b> <a href="lwg-index-open.html#ranges.syn">active issues</a> in [ranges.syn].</p>
<p><b>View all other</b> <a href="lwg-index.html#ranges.syn">issues</a> in [ranges.syn].</p>
<p><b>View all issues with</b> <a href="lwg-status.html#C++20">C++20</a> status.</p>
<p><b>Discussion:</b></p>
<p>
Various WG21 members have commented that the use of "safe" in the names <code>safe_range</code>, 
<code>enable_safe_range</code>, <code>safe_iterator_t</code>, and <code>safe_subrange_t</code> to mean "fairly 
unlikely to produce dangling iterators" is inappropriate. The term "safe" has very strong 
connotations in some application domains, and these names don't intend such connotations. We 
could avoid confusion by changing these names to avoid the use of "safe". The Ranges Illuminati 
has deemed "borrowed" to be more appropriate: it reflects the fact that such ranges often 
"borrow" iterators from an adapted range which allows them to not be lifetime-bound to the 
adapting range.
</p>

<p><i>[2020-02-08 Issue Prioritization]</i></p>

<p>Priority to 1 after reflector discussion. This issue needs to be looked at by LEWG.</p>

<p><i>[2020-02-13, Prague]</i></p>

<p>
Set to Immediate.
</p>


<p id="res-3379"><b>Proposed resolution:</b></p>
<p>This wording is relative to <a href="https://wg21.link/n4849">N4849</a>.</p>

<ol>
<li>
<p>
Replace all occurrences of <code>safe_range</code>, <code>enable_safe_range</code>, <code>safe_iterator_t</code>, 
and <code>safe_subrange_t</code> in the working draft with <code>borrowed_range</code>, <code>enable_borrowed_range</code>, <code>borrowed_iterator_t</code>, and <code>borrowed_subrange_t</code>. 
</p>
</li>
</ol>





</body>
</html>
