diff --git a/xml/issue4337.xml b/xml/issue4337.xml new file mode 100644 index 0000000000..d9c709788a --- /dev/null +++ b/xml/issue4337.xml @@ -0,0 +1,48 @@ + + + + +<code>co_await change_coroutine_scheduler(s)</code> requires assignable +
+Dietmar Kühl +31 Aug 2025 +99 + + +

+The specification of change_coroutine_scheduler(sched) uses +std::exchange to put the scheduler into place +(in 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. +

+
+ + +

+Change the wording in 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);
+
+
+
+

+
+ +