<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Issue 2695: "As if" unclear in [member.functions]</title>
<meta property="og:title" content="Issue 2695: &quot;As if&quot; unclear in [member.functions]">
<meta property="og:description" content="C++ library issue. Status: New">
<meta property="og:url" content="https://cplusplus.github.io/LWG/issue2695.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#New">New</a> status.</em></p>
<h3 id="2695"><a href="lwg-active.html#2695">2695</a>. "As if" unclear in [member.functions]</h3>
<p><b>Section:</b> 16.4.6.5 <a href="https://wg21.link/member.functions">[member.functions]</a> <b>Status:</b> <a href="lwg-active.html#New">New</a>
 <b>Submitter:</b> Hubert Tong <b>Opened:</b> 2016-04-15 <b>Last modified:</b> 2017-02-02</p>
<p><b>Priority: </b>3
</p>
<p><b>View other</b> <a href="lwg-index-open.html#member.functions">active issues</a> in [member.functions].</p>
<p><b>View all other</b> <a href="lwg-index.html#member.functions">issues</a> in [member.functions].</p>
<p><b>View all issues with</b> <a href="lwg-status.html#New">New</a> status.</p>
<p><b>Discussion:</b></p>
<p>
In N4582 subclause 17.6.5.5 [member.functions], the requirement that:
</p>
<blockquote><p>
any call to the member function that would select an overload from the set of declarations described in this 
standard behaves as if that overload were selected
</p></blockquote>
<p>
is unclear in the extent of the "as if". For example, in providing:
</p>
<blockquote><pre>
basic_string(const charT* s);
</pre></blockquote>
<p>
for a one-argument call to:
</p>
<blockquote><pre>
basic_string(const charT* s, const Allocator&amp; a = Allocator());
</pre></blockquote>
<p>
it can be read that an implementation may be required to call the copy constructor for the allocator since 
the core language rules for copy elision would not allow the "a" argument to be constructed directly into 
the member used to store the allocator.
<p/>
Clarification (even if just a note) would be appreciated.
</p>

<p><i>[2016-05 Issues Telecon]</i></p>

<p>
This is related to issue <a href="lwg-closed.html#2563" title="LWG 2259 relaxes requirements, perhaps unintentionally (Status: NAD)">2563</a><sup><a href="https://cplusplus.github.io/LWG/issue2563" title="Latest snapshot">(i)</a></sup>.
</p>


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





</body>
</html>
