Section: 220.127.116.11 [coroutine.handle.promise] Status: Resolved Submitter: Jiang An Opened: 2020-07-25 Last modified: 2020-11-09 21:49:58 UTC
View all issues with Resolved status.
The issue is related to LWG 3460.Because the coroutine_handle<> base subobject of a coroutine_handle<P1> can be assigned from the one of a coroutine_handle<P2>, a coroutine_handle<P1> may refer to a coroutine whose promise type is P2. If a coroutine_handle<P> refers to a coroutine with difference, a call to promise() should result in undefined behavior IMO. I think that 18.104.22.168 [coroutine.handle.promise]/1 should be changed to: "Preconditions: *this refers to a coroutine whose promise type is Promise.", and the same precondition should be added to 22.214.171.124.4 [coroutine.handle.noop.promise], and hence noexcept should be removed from coroutine_handle<noop_coroutine_promise>::promise.
[2020-08-21; Reflector prioritization]
Set priority to 2 after reflector discussions.
Previous resolution [SUPERSEDED]:
This wording is relative to N4861.
Modify 126.96.36.199 [coroutine.handle.promise] as indicated:Promise& promise() const;
-1- Preconditions: *this refers to a coroutine .-2- Returns: A reference to the promise of the coroutine.
Modify 188.8.131.52 [coroutine.handle.noop], class coroutine_handle<noop_coroutine_promise> synopsis, as indicated:[…] // 184.108.40.206.4 [coroutine.handle.noop.promise], promise access noop_coroutine_promise& promise() const
Modify 220.127.116.11.4 [coroutine.handle.noop.promise] as indicated:noop_coroutine_promise& promise() const
-1- Returns: A reference to the promise object associated with this coroutine handle.
[2020-11-09 Resolved by acceptance of 3460. Status changed: Tentatively Resolved → Resolved.]
This issue is resolved by the resolution of issue 3460.