4213. Sender spec depends on unspecified order of evaluation

Section: 33.9 [exec.snd] Status: New Submitter: Frank Birbacher Opened: 2025-02-14 Last modified: 2025-02-23

Priority: Not Prioritized

View all issues with New status.

Discussion:

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 33.9.12.4 [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:

  1. 33.9.12.7 [exec.then] p3

  2. 33.9.12.8 [exec.let] p4

  3. 33.9.12.9 [exec.bulk] p2

  4. 33.9.12.10 [exec.split] p4

  5. 33.9.12.11 [exec.when.all] p3

  6. 33.9.12.12 [exec.into.variant] p3

  7. 33.9.12.13 [exec.stopped.opt] p2

  8. 33.9.12.14 [exec.stopped.err] p2

  9. 33.9.13.2 [exec.sync.wait.var] p1

Proposed resolution: