Skip to content

Commit 983231a

Browse files
committed
Set priority of 4204 and add additional context to P/R
1 parent de00964 commit 983231a

File tree

1 file changed

+51
-1
lines changed

1 file changed

+51
-1
lines changed

xml/issue4204.xml

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<section><sref ref="[exec.let]"/></section>
77
<submitter>Eric Niebler</submitter>
88
<date>03 Feb 2025</date>
9-
<priority>99</priority>
9+
<priority>1</priority>
1010

1111
<discussion>
1212
<p>
@@ -30,6 +30,12 @@ Paragraphs 8, 9, and 10 only make sense in relation to the lambda in paragraph 7
3030
but that is not at all clear from the current wording.
3131
I suggest making paragraphs 8, 9, and 10 sub-bullets of paragraph 7.
3232
</p>
33+
34+
<note>2025-02-07; Reflector poll</note>
35+
<p>
36+
Set priority to 1 after reflector poll.
37+
</p>
38+
3339
</discussion>
3440

3541
<resolution>
@@ -42,6 +48,44 @@ Change <sref ref="[exec.let]"/> as indicated,
4248
and nest paragraphs 8, 9, and 10 below paragraph 7:
4349

4450
<blockquote>
51+
<p>
52+
-7-
53+
<code><i>impls-for</i>&lt;<i>decayed-typeof</i>&lt;<i>let-cpo</i>&gt;&gt;::<i>get-state</i></code>
54+
is initialized with a callable object equivalent to the following:
55+
<pre><code>
56+
[]&lt;class Sndr, class Rcvr&gt;(Sndr&amp;&amp; sndr, Rcvr&amp; rcvr) requires <i>see below</i> {
57+
auto&amp; [_, fn, child] = sndr;
58+
using fn_t = decay_t&lt;decltype(fn)&gt;;
59+
using env_t = decltype(<i>let-env</i>(child));
60+
using args_variant_t = <i>see below</i>;
61+
using ops2_variant_t = <i>see below</i>;
62+
63+
struct state-type {
64+
fn_t fn; <i>// exposition only</i>
65+
env_t env; <i>// exposition only</i>
66+
args_variant_t args; <i>// exposition only</i>
67+
ops2_variant_t ops2; <i>// exposition only</i>
68+
};
69+
return <i>state-type</i>{std::forward_like&lt;Sndr&gt;(fn), <i>let-env</i>(child), {}, {}};
70+
}
71+
</code></pre>
72+
</p>
73+
<p>
74+
-8-
75+
Let `Sigs` be a pack of the arguments to the `completion_signatures`
76+
specialization named by
77+
<code>completion_signatures_of_t&lt;<i>child-type</i>&lt;Sndr&gt;,
78+
env_of_t&lt;Rcvr&gt;&gt;</code>.
79+
Let `LetSigs` be a pack of those types in `Sigs` with a return type of
80+
<code><i>decayed-typeof</i>&lt;<i>set-cpo</i>&gt;</code>.
81+
Let `as-tuple` be an alias template such that
82+
<code><i>as-tuple</i>&lt;Tag(Args...)&gt;</code>
83+
denotes the type <code><i>decayed-tuple</i>&lt;Args...&gt;</code>.
84+
Then `args_variant_t` denotes the type
85+
<code>variant&lt;monostate, <i>as-tuple</i>&lt;LetSigs&gt;...&gt;</code>
86+
except with duplicate types removed.
87+
</p>
88+
<p>
4589
-9-
4690
Given a type `Tag` and a pack `Args`, let <code><i>as-sndr2</i></code>
4791
be an alias template such that
@@ -52,6 +96,12 @@ Then `ops2_variant_t` denotes the type
5296
<pre><code> variant&lt;monostate, connect_result_t&lt;<i>as-sndr2</i>&lt;LetSigs&gt;, receiver2&lt;Rcvr, <del>Env</del><ins>env_t</ins>&gt;&gt;...&gt;
5397
</code></pre>
5498
except with duplicate types removed.
99+
</p>
100+
<p>
101+
-10-
102+
The <i>requires-clause</i> constraining the above lambda is satisfied
103+
if and only if the types `args_variant_t` and `ops2_variant_t` are well-formed.
104+
</p>
55105
</blockquote>
56106

57107
</li>

0 commit comments

Comments
 (0)