<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<TITLE>
    CWG Issue 2283</TITLE>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<STYLE TYPE="text/css">
  INS { text-decoration:none; font-weight:bold; background-color:#A0FFA0 }
  .INS { text-decoration:none; background-color:#D0FFD0 }
  DEL { text-decoration:line-through; background-color:#FFA0A0 }
  .DEL { text-decoration:line-through; background-color: #FFD0D0 }
  @media (prefers-color-scheme: dark) {
    HTML { background-color:#202020; color:#f0f0f0; }
    A { color:#5bc0ff; }
    A:visited { color:#c6a8ff; }
    A:hover, a:focus { color:#afd7ff; }
    INS { background-color:#033a16; color:#aff5b4; }
    .INS { background-color: #033a16; }
    DEL { background-color:#67060c; color:#ffdcd7; }
    .DEL { background-color:#67060c; }
  }
  SPAN.cmnt { font-family:Times; font-style:italic }
</STYLE>
</HEAD>
<BODY>
<P><EM>This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21
  Core Issues List revision 118b.
  See http://www.open-std.org/jtc1/sc22/wg21/ for the official
  list.</EM></P>
<P>2025-09-28</P>
<HR>
<A NAME="2283"></A><H4>2283.
  
Missing complete type requirements
</H4>
<B>Section: </B>7.6.1.3&#160; [<A href="https://wg21.link/expr.call">expr.call</A>]
 &#160;&#160;&#160;

 <B>Status: </B>CD7
 &#160;&#160;&#160;

 <B>Submitter: </B>Richard Smith
 &#160;&#160;&#160;

 <B>Date: </B>2016-06-27<BR>


<P>[Accepted as a DR at the November, 2024 meeting.]</P>



<P>
<A HREF="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0135r1.html">P0135R1</A>
(Wording for guaranteed copy elision through simplified value
categories) removes complete type requirements from
7.6.1.3 [<A href="https://wg21.link/expr.call">expr.call</A>] (under the assumption that subclause
9.5 [<A href="https://wg21.link/dcl.init">dcl.init</A>] has them; apparently it does not) and from
7.6.1.8 [<A href="https://wg21.link/expr.typeid#3">expr.typeid</A>] paragraph 3.  These both appear to be bad
changes and should presumably be reverted.
</P>

<P><B>Additional notes (October, 2024)</B></P>

<P>An almost-editorial change (approved by CWG 2021-08-24) restored a
consistent complete-type requirement for <TT>typeid</TT>; see
<A HREF="https://github.com/cplusplus/draft/pull/4827">cplusplus/draft#4827</A>.</P>

<P><B>Proposed resolution (approved by CWG 2024-10-25):</B></P>

<P>Change in 7.6.1.3 [<A href="https://wg21.link/expr.call#13">expr.call</A>] paragraph 13 as follows:</P>

<BLOCKQUOTE>

A function call is an lvalue if the result type is an lvalue reference
type or an rvalue reference to function type, an xvalue if the result
type is an rvalue reference to object type, and a prvalue otherwise.
<INS>If it is a non-<TT>void</TT> prvalue, the type of the function
call expression shall be complete, except as specified in
9.2.9.6 [<A href="https://wg21.link/dcl.type.decltype">dcl.type.decltype</A>].</INS>

</BLOCKQUOTE>
<BR><BR>
</BODY>
</HTML>
