If the operand is a braced-init-list or an expression of non-void type,
S is p.return_value(expr-or-braced-init-list). The expression S shall be a prvalue of type void.
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.