Created on 2025-02-14.00:00:00 last changed 1 month ago
[ 2025-10-23; Reflector poll. ]
Set priority to 2 after reflector poll.
"Don't want to have to consider whether you can call `get_env` on a moved-from sender. If the domain is a stateless tag type, then get-domain-early's return value can't depend on the actual value of the sender, just its type. If that's correct, we can just spell this `decltype(get-domain-early(sndr)){}`. We already do this for get-domain-late."
"The point of all these exposition-only things was to make the wording more compact and readable. Adding `decltype` and parens everywhere wouldn't help that. Maybe change get-domain-early and get-domain-late from function templates to all-caps wording macros, e.g. `GET-DOMAIN-EARLY``(sndr)`?"
"NAD, I think the issue is covered by “except sndr is evaluated just once.”"
In certain clauses for defining senders the unspecified order of evaluation of function arguments can lead to retrieving values from a move-from state of a sender. An example is [exec.continues.on] where paragraph 3 states:
transform_sender(get-domain-early(sndr), make-sender(continues_on, sch, sndr))
In this expression the evaluation of get-domain-early(sndr) can happen before or after the make-sender. The latter can steal the value from `sndr` by moving from it. So get-domain-early may see the moved-from state of `sndr` and fail to obtain anything.
Repetitions are at least in:[exec.then] p3
[exec.let] p4
[exec.bulk] p2
[exec.split] p4
[exec.when.all] p3
[exec.into.variant] p3
[exec.stopped.opt] p2
[exec.stopped.err] p2
[exec.sync.wait.var] p1
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2025-10-23 12:39:14 | admin | set | messages: + msg15394 |
| 2025-02-14 00:00:00 | admin | create | |