Open
Description
[exec.schedule.from] p6 reads:
The member
impls-for<schedule_from_t>::get-state
is initialized with a callable object equivalent to the following lambda:[]<class Sndr, class Rcvr>(Sndr&& sndr, Rcvr& rcvr) noexcept(see below) requires sender_in<child-type<Sndr>, env_of_t<Rcvr>> {
The constraint should account for the fact that the child sender will be connected with FWD-ENV(get_env(rcvr))
.
Proposed Resolution
Change [exec.snd.expos] p2 as follows (underlined text is new):
- For a queryable object
env
,FWD-ENV(env)
is an expression whose
type satisfiesqueryable
such that for a query objectq
and a pack
of subexpressionsas
, the expressionFWD-ENV(env).query(q, as...)
is ill-formed ifforwarding_query(q)
isfalse
; otherwise, it is
expression-equivalent toenv.query(q, as...)
.
The typeFWD-ENV-T(Env)
isdecltype(FWD-ENV(declval<Env>()))
.
Change [exec.schedule.from] p6 as follows:
The member `impls-for<schedule_from_t>::get-state` is initialized with
a callable object equivalent to the following lambda:
[]<class Sndr, class Rcvr>(Sndr&& sndr, Rcvr& rcvr) noexcept(see below)
- requires sender_in<child-type<Sndr>, env_of_t<Rcvr>> {
+ requires sender_in<child-type<Sndr>, FWD-ENV-T(env_of_t<Rcvr>)> {
Change [exec.schedule.from] p8 as follows:
Let Sigs be a pack of the arguments to the completion_signatures
specialization named by
-completion_signatures_of_t<child-type<Sndr>, env_of_t<Rcvr>>. Let
+completion_signatures_of_t<child-type<Sndr>, FWD-ENV-T(env_of_t<Rcvr>)>. Let
as-tuple be an alias template that transforms a completion signature
Tag(Args...) into the tuple specialization decayed-tuple<Tag, Args...>.
Then variant_t denotes the type variant<monostate, as-tuple<Sigs>...>,
except with duplicate types removed.