Created on 2025-08-31.00:00:00 last changed 1 month ago
Proposed resolution:
Change the wording in [task.promise] paragraph 11
to avoid the use of std::exchange and transfer the using
construction:
template<class Sch> auto await_transform(change_coroutine_scheduler<Sch> sch) noexcept;-11- Effects: Equivalent to:
return await_transform(just(exchange(SCHED(*this), scheduler_type(sch.scheduler))), *this);auto* s{address_of(SCHED(*this))}; auto rc{std::move(*s)}; s->~scheduler_type(); new(s) scheduler_type(std::move(sch)); return std::move(rc);
[ 2025-12-10 Status changed: Tentatively NAD → NAD. ]
[ 2025-10-23; Reflector poll. Status → Tentatively NAD . ]
"`scheduler` requires `copyable` which requires assignment."
The specification of change_coroutine_scheduler(sched) uses
std::exchange to put the scheduler into place
(in [task.promise] paragraph 11).
The problem is that std::exchange(x, v) expects
x to be assignable from v but there is
no requirement for scheduler to be assignable.
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2025-10-27 09:58:11 | admin | set | messages: + msg15442 |
| 2025-10-23 10:49:28 | admin | set | messages: + msg15376 |
| 2025-10-23 10:49:28 | admin | set | status: new -> nad |
| 2025-09-01 11:52:04 | admin | set | messages: + msg14992 |
| 2025-08-31 00:00:00 | admin | create | |