This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 115d. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2024-10-26
[Accepted at the November, 2020 meeting.]
There are two references to “flowing off the end of a coroutine”, specifically in 8.7.5 [stmt.return.coroutine] paragraph 3:
If p.return_void() is a valid expression, flowing off the end of a coroutine is equivalent to a co_return with no operand; otherwise flowing off the end of a coroutine results in undefined behavior.
and 9.5.4 [dcl.fct.def.coroutine] paragraph 11:
The coroutine state is destroyed when control flows off the end of the coroutine or...
These mean different things and should be clarified.
Proposed resolution (July, 2020):
Change 8.7.5 [stmt.return.coroutine] paragraph 3 as follows:
If p.return_void() is a valid expression, flowing off the end of a coroutine's function-body is equivalent to a co_return with no operand;otherwise flowing off the end of a coroutine's function-body results in undefined behavior.