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.

4342. Missing rvalue reference qualification for task_scheduler::ts-sender::connect()

Section: 33.13.5 [exec.task.scheduler] Status: New Submitter: Dietmar Kühl Opened: 2025-09-01 Last modified: 2025-09-01

Priority: Not Prioritized

View other active issues in [exec.task.scheduler].

View all other issues in [exec.task.scheduler].

View all issues with New status.

Discussion:

The result of schedule(sched) for a scheduler sched is only required to be movable. An object of this type may need to be forwarded to an operation state constructor by task_scheduler::ts-sender::connect. Thus, this function should be qualified with an rvalue reference.

Proposed resolution:

Add an rvalue qualifier to the declaration of connect in 33.13.5 [exec.task.scheduler] paragraph 8:

namespace std::execution {
  class task_scheduler::ts-sender {     // exposition only
  public:
    using sender_concept = sender_t;

    template<receiver Rcvr>
      state<Rcvr> connect(Rcvr&& rcvr) &&;
  };
}

In the specification in 33.13.5 [exec.task.scheduler] paragraph 10 add an rvalue qualifier to connect:

template<receiver Rcvr>
  state<Rcvr> connect(Rcvr&& rcvr) &&;

-10- Effects: Let r be an object of a type that models receiver and whose completion handlers result in invoking the corresponding completion handlers of rcvr or copy thereof. Returns an object of type state<Rcvr> containing an operation state object initialized with connect(SENDER(*this), std::move(r)).