Created on 2025-09-01.00:00:00 last changed 2 weeks ago
Proposed resolution:
Add a new paragraph to the specification of affine_on
in [exec.affine.on] providing
a specification for the default implementation:
-6- Let
sndrandenvbe subexpressions such thatSndrisdecltype((sndr)). Ifsender-for<Sndr, affine_on_t>isfalse, then the expressionaffine_on.transform_sender(sndr, env)is ill-formed; otherwise, it is equivalent to:auto [_, sch, child] = sndr; return transform_sender( query-with-default(get_domain, sch, default_domain()), continues_on(std::move(child), std::move(sch)));except that
schis only evaluated once.
Proposed resolution:
Add a new paragraph to the specification of affine_on
in [exec.affine.on] providing
a specification for the default implementation:
-6- Let
sndrandenvbe subexpressions such thatSndrisdecltype((sndr)). Ifsender-for<Sndr, affine_on_t>isfalse, then the expressionaffine_on.transform_sender(sndr, env)is ill-formed; otherwise, it is equivalent to:auto [_, sch, child] = sndr; return transform_sender( query-with-default(get_domain, sch, default_domain()), continues_on(std::move(child), std::move(sch)));except that
schis only evaluated once.
[ 2025-10-17; Reflector poll. ]
Set priority to 2 after reflector poll.
The wording of affine_on doesnt have a specification
for the default implementation. For other algorithms the default
implementation is specified.
The intention for affine_on was to all
optimisation/customisation in a way reducing the necessary scheduling:
if the implementation can determine if a sender completed already
on the correct execution agent it should be allowed to avoid
scheduling. A specification should provide enough lattitude to
allow that.
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2025-10-27 09:58:11 | admin | set | messages: + msg15448 |
| 2025-10-17 14:52:42 | admin | set | messages: + msg15238 |
| 2025-09-01 20:25:13 | admin | set | messages: + msg15004 |
| 2025-09-01 00:00:00 | admin | create | |