@@ -4085,11 +4085,11 @@ template<class C>
4085
4085
non-senders as arguments and that returns a sender.
4086
4086
4087
4087
* A <dfn export=true>sender adaptor</dfn> is a function that constructs and
4088
- returns a parent sender from a set of one or more child senders and a
4089
- (possibly empty) set of additional arguments. An asynchronous operation
4090
- created by a <dfn export=true>parent sender</dfn> is a parent to the
4091
- child operations created by the <dfn export=true lt="child sender"> child
4092
- senders</dfn> .
4088
+ returns a <dfn export=true> parent sender</dfn> from a set of one or more
4089
+ <dfn export=true lt="child sender">child senders</dfn> and a (possibly
4090
+ empty) set of additional arguments. An asynchronous operation created by
4091
+ a parent sender is a parent operation to the child operations created by
4092
+ the child senders.
4093
4093
4094
4094
* A <dfn export=true>sender consumer</dfn> is a function that takes one or
4095
4095
more senders and a (possibly empty) set of additional arguments, and
@@ -5558,7 +5558,7 @@ struct default_domain {
5558
5558
<pre highlight="c++">
5559
5559
template <sender Sndr, queryable... Env>
5560
5560
requires (sizeof...(Env) <= 1)
5561
- constexpr sender decltype(auto) default_domain:: transform_sender(Sndr&& sndr, const Env&... env) noexcept(<i> see below</i> );
5561
+ constexpr sender decltype(auto) transform_sender(Sndr&& sndr, const Env&... env) noexcept(<i> see below</i> );
5562
5562
</pre>
5563
5563
5564
5564
1. Let <code><i> e</i></code> be the expression
@@ -5571,7 +5571,7 @@ template <sender Sndr, queryable... Env>
5571
5571
5572
5572
<pre highlight="c++">
5573
5573
template <sender Sndr, queryable Env>
5574
- constexpr queryable decltype(auto) default_domain:: transform_env(Sndr&& sndr, Env&& env) noexcept;
5574
+ constexpr queryable decltype(auto) transform_env(Sndr&& sndr, Env&& env) noexcept;
5575
5575
</pre>
5576
5576
5577
5577
4. Let <code><i> e</i></code> be the expression
@@ -5585,13 +5585,11 @@ template <sender Sndr, queryable Env>
5585
5585
5586
5586
<pre highlight="c++">
5587
5587
template<class Tag, sender Sndr, class... Args>
5588
- constexpr decltype(auto) default_domain:: apply_sender(Tag, Sndr&& sndr, Args&&... args) noexcept(<i> see below</i> );
5588
+ constexpr decltype(auto) apply_sender(Tag, Sndr&& sndr, Args&&... args) noexcept(<i> see below</i> );
5589
5589
</pre>
5590
5590
5591
5591
7. Let <code><i> e</i></code> be the expression
5592
- `Tag().apply_sender(std::forward<Sndr>(sndr), std::forward<Args>(args)...)`
5593
- if that expression is well-formed; otherwise, this function shall not
5594
- participate in overload resolution.
5592
+ `Tag().apply_sender(std::forward<Sndr>(sndr), std::forward<Args>(args)...)`.
5595
5593
5596
5594
8. <i> Constraints:</i> <code><i> e</i></code> is a well-formed expression.
5597
5595
@@ -5607,18 +5605,20 @@ template<class Domain, sender Sndr, queryable... Env>
5607
5605
constexpr sender decltype(auto) transform_sender(Domain dom, Sndr&& sndr, const Env&... env) noexcept(<i> see below</i> );
5608
5606
</pre>
5609
5607
5610
- 1. Let <code><i> sndr2 </i></code> be the expression
5608
+ 1. Let <code><i> transformed-sndr </i></code> be the expression
5611
5609
`dom.transform_sender(std::forward<Sndr>(sndr), env...)` if that expression
5612
5610
is well-formed; otherwise,
5613
5611
`default_domain().transform_sender(std::forward<Sndr>(sndr), env...)`. Let
5614
- <code><i> sndr3</i></code> be <code><i> sndr2</i></code> if
5615
- <code><i> sndr2</i></code> and `sndr` have the same type ignoring *cv*
5616
- qualifiers; otherwise, <code> transform_sender(dom, <i> sndr2</i> , env...)</code> .
5612
+ <code><i> final-sndr</i></code> be the expression
5613
+ <code><i> transformed-sndr</i></code> if <code><i> transformed-sndr</i></code>
5614
+ and `sndr` have the same type ignoring *cv* qualifiers; otherwise, it is the
5615
+ expression <code> transform_sender(dom, <i> transformed-sndr</i> ,
5616
+ env...)</code> .
5617
5617
5618
- 2. <i> Returns:</i> <code><i> sndr3 </i></code> .
5618
+ 2. <i> Returns:</i> <code><i> final-sndr </i></code> .
5619
5619
5620
5620
3. <i> Remarks:</i> The exception specification is equivalent to
5621
- <code> noexcept(<i> sndr3 </i> )</code> .
5621
+ <code> noexcept(<i> final-sndr </i> )</code> .
5622
5622
5623
5623
### `execution::transform_env` <b> [exec.snd.transform.env] </b> ### {#spec-execution.env_transform}
5624
5624
@@ -5897,12 +5897,11 @@ template<class Domain, class Tag, sender Sndr, class... Args>
5897
5897
chains. The adaptors also support function call syntax with equivalent
5898
5898
semantics.
5899
5899
5900
- 3. Unless otherwise specified, a sender adaptor is required to not begin
5901
- executing any functions that would observe or modify any of the arguments
5902
- of the adaptor before the returned sender is connected with a receiver using
5903
- `connect`, and `start` is called on the resulting operation state. This
5904
- requirement applies to any function that is selected by the implementation
5905
- of the sender adaptor.
5900
+ 3. Unless otherwise specified, a sender adaptor is prohibited from causing
5901
+ observable effects, apart from moving and copying its arguments, before the
5902
+ returned sender is connected with a receiver using `connect`, and `start` is
5903
+ called on the resulting operation state. This requirement applies to any
5904
+ function that is selected by the implementation of the sender adaptor.
5906
5905
5907
5906
4. Unless otherwise specified, a parent sender ([async.ops] ) with a single child
5908
5907
sender `sndr` has an associated attribute object equal to
@@ -5915,7 +5914,7 @@ template<class Domain, class Tag, sender Sndr, class... Args>
5915
5914
5. Unless otherwise specified, when a parent sender is connected to a receiver
5916
5915
`rcvr`, any receiver used to connect a child sender has an associated
5917
5916
environment equal to <code><i> FWD-ENV</i> (get_env(rcvr))</code> . This
5918
- requirements applies to any sender returned from a function that is selected
5917
+ requirement applies to any sender returned from a function that is selected
5919
5918
by the implementation of such sender adaptor.
5920
5919
5921
5920
6. For any sender type, receiver type, operation state type, queryable type, or
0 commit comments