This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of WP status.
Section: 26.8.5 [coro.generator.promise] Status: WP Submitter: US Opened: 2022-11-10 Last modified: 2022-11-17
Priority: Not Prioritized
View other active issues in [coro.generator.promise].
View all other issues in [coro.generator.promise].
View all issues with WP status.
Discussion:
This is in resolution of US 56-118 (26.8.5 [coro.generator.promise] Redundant specification).
[Paragraph 14] is redundant given [paragraphs] 13 and 12. Remove it.
Paragraphs 12 and 14 are identical: "Remarks: A yield-expression that calls this function has type void (7.6.17 [expr.yield])." Paragraph 13 states that the overload of yield_value that accepts ranges::elements_of for arbitrary ranges has "Effects: Equivalent to:" calling the overload of yield_value that accepts specializations of generator, which paragraph 12 specifies. Per 16.3.2.4 [structure.specifications] paragraph 4, the former overload "inherits" the Remarks of paragraph 12 making paragraph 14 redundant.
LWG is concerned that the redundancy is not immediately obvious — it depends on an understanding of how await expressions function — so we'd like to preserve comment despite that we agree that it is normatively redundant.
[2022-11-10 Casey provides wording]
[Kona 2022-11-11; Move to Immediate]
[2022-11-12 Approved at November 2022 meeting in Kona. Status changed: Immediate → WP.]
Proposed resolution:
This wording is relative to N4917.
Modify 26.8.5 [coro.generator.promise] as indicated:
template<ranges::input_range R, class Alloc> requires convertible_to<ranges::range_reference_t<R>, yielded> auto yield_value(ranges::elements_of<R, Alloc> r) noexcept;-13- Effects: Equivalent to: […]
-14-
Remarks:[Note 1: A yield-expression that calls this function has type void (7.6.17 [expr.yield]). — end note]