<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<TITLE>
    CWG Issue 2410</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="2410"></A><H4>2410.
  
Implicit calls of immediate functions
</H4>
<B>Section: </B>9.2.6&#160; [<A href="https://wg21.link/dcl.constexpr">dcl.constexpr</A>]
 &#160;&#160;&#160;

 <B>Status: </B>C++23
 &#160;&#160;&#160;

 <B>Submitter: </B>John Spicer
 &#160;&#160;&#160;

 <B>Date: </B>2019-03-27<BR>


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

<P>The intent for immediate functions is that they can only be
called at compile time. That rule is enforced by the wording
of 7.5.5 [<A href="https://wg21.link/expr.prim.id#3">expr.prim.id</A>] paragraph 3:</P>

<BLOCKQUOTE>

An <I>id-expression</I> that denotes an immediate function
(9.2.6 [<A href="https://wg21.link/dcl.constexpr">dcl.constexpr</A>]) shall appear as a subexpression
of an immediate invocation or in an immediate function
context (7.7 [<A href="https://wg21.link/expr.const">expr.const</A>]).

</BLOCKQUOTE>

<P>However, this restriction does not apply to implicit
function calls such as constructor and operator
invocations.  Presumably some additional wording is needed
for such cases.</P>

<P><B>Additional note, July, 2019:</B></P>

<P>This issue would appear to be NAD because of the following
wording from 7.7 [<A href="https://wg21.link/expr.const#10">expr.const</A>] paragraph 10:</P>

<BLOCKQUOTE>

An expression or conversion is an immediate invocation if it
is an explicit or implicit invocation of an immediate
function and is not in an immediate function context. An
immediate invocation shall be a constant expression.

</BLOCKQUOTE>

<P><B>Proposed resolution (approved by CWG 2022-10-21):</B></P>

<P>Change in 7.7 [<A href="https://wg21.link/expr.const#10">expr.const</A>] paragraph 10 as follows:</P>

<BLOCKQUOTE>

An <DEL>expression or conversion</DEL> <INS>invocation</INS> is an
immediate invocation if it is an explicit or implicit invocation of an
immediate function and is not in an immediate function context. An
immediate invocation shall be a constant expression.

</BLOCKQUOTE>

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