This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of New status.

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: