Skip to content

Commit 2227065

Browse files
timsong-cppjwakely
authored andcommitted
Add updated wording for LWG 4143
1 parent 595c418 commit 2227065

File tree

1 file changed

+73
-3
lines changed

1 file changed

+73
-3
lines changed

xml/issue4143.xml

Lines changed: 73 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,7 @@ Should require the expressions to have type `void`,
3030
rather than just discarding anything that is returned.
3131
</p>
3232

33-
</discussion>
34-
35-
<resolution>
33+
<superseded>
3634
<p>
3735
This wording is relative to <paper num="N4988"/>.
3836
</p>
@@ -90,6 +88,78 @@ expression-equivalent to <tt><i>MANDATE-NOTHROW</i>(<ins>void(</ins>op.start()<i
9088
</li>
9189
</ol>
9290

91+
</superseded>
92+
93+
<note>2026-03-27; Tim provides new wording</note>
94+
95+
</discussion>
96+
97+
<resolution>
98+
99+
<p>
100+
This wording is relative to <paper num="N4988"/>.
101+
</p>
102+
103+
<ol>
104+
<li><p>Modify <sref ref="[exec.set.value]"/> as indicated:</p>
105+
106+
<blockquote>
107+
<p>
108+
-1- <tt>set_value</tt> is a value completion function (<sref ref="[exec.async.ops]"/>).
109+
Its associated completion tag is <tt>set_value_t</tt>. The expression <tt>set_value(rcvr, vs...)</tt>
110+
for a subexpression <tt>rcvr</tt> and pack of subexpressions <tt>vs</tt> is ill-formed if
111+
<tt>rcvr</tt> is an lvalue or an rvalue of const type. Otherwise, it is expression-equivalent to
112+
<tt><i>MANDATE-NOTHROW</i>(rcvr.set_value(vs...))</tt>.
113+
<p/>
114+
<ins><i>Mandates</i>: If the expression above is well-formed, its type is `void`.</ins>
115+
</p>
116+
</blockquote>
117+
</li>
118+
119+
<li><p>Modify <sref ref="[exec.set.error]"/> as indicated:</p>
120+
121+
<blockquote>
122+
<p>
123+
-1- <tt>set_error</tt> is an error completion function (<sref ref="[exec.async.ops]"/>).
124+
Its associated completion tag is <tt>set_error_t</tt>. The expression <tt>set_error(rcvr, err)</tt>
125+
for some subexpressions <tt>rcvr</tt> and <tt>err</tt> is ill-formed if <tt>rcvr</tt> is an
126+
lvalue or an rvalue of const type. Otherwise, it is expression-equivalent to
127+
<tt><i>MANDATE-NOTHROW</i>(rcvr.set_error(err))</tt>.
128+
<p/>
129+
<ins><i>Mandates</i>: If the expression above is well-formed, its type is `void`.</ins>
130+
</p>
131+
</blockquote>
132+
</li>
133+
134+
<li><p>Modify <sref ref="[exec.set.stopped]"/> as indicated:</p>
135+
136+
<blockquote>
137+
<p>
138+
-1- <tt>set_stopped</tt> is a stopped completion function (<sref ref="[exec.async.ops]"/>).
139+
Its associated completion tag is <tt>set_stopped_t</tt>. The expression <tt>set_stopped(rcvr)</tt>
140+
for a subexpression <tt>rcvr</tt> is ill-formed if <tt>rcvr</tt> is an lvalue or an rvalue of
141+
const type. Otherwise, it is expression-equivalent to
142+
<tt><i>MANDATE-NOTHROW</i>(rcvr.set_stopped())</tt>.
143+
<p/>
144+
<ins><i>Mandates</i>: If the expression above is well-formed, its type is `void`.</ins>
145+
</p>
146+
</blockquote>
147+
</li>
148+
149+
<li><p>Modify <sref ref="[exec.opstate.start]"/> as indicated:</p>
150+
151+
<blockquote>
152+
<p>
153+
-1- The name <tt>start</tt> denotes a customization point object that starts (<sref ref="[exec.async.ops]"/>)
154+
the asynchronous operation associated with the operation state object. For a subexpression <tt>op</tt>,
155+
the expression <tt>start(op)</tt> is ill-formed if <tt>op</tt> is an rvalue. Otherwise, it is
156+
expression-equivalent to <tt><i>MANDATE-NOTHROW</i>(op.start())</tt>.
157+
<p/>
158+
<ins><i>Mandates</i>: If the expression above is well-formed, its type is `void`.</ins>
159+
</p>
160+
</blockquote>
161+
</li>
162+
</ol>
93163
</resolution>
94164

95165
</issue>

0 commit comments

Comments
 (0)