From c8ed14a9209fcb742579da711ee309e463abe186 Mon Sep 17 00:00:00 2001 From: HNeitzel Date: Tue, 18 Feb 2025 00:16:26 +0100 Subject: [PATCH] LWG-3899 co_yielding elements of an lvalue generator is unnecessarily inefficient #5111 --- stl/inc/generator | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/stl/inc/generator b/stl/inc/generator index 09c16afc339..3374d9bb589 100644 --- a/stl/inc/generator +++ b/stl/inc/generator @@ -286,6 +286,13 @@ namespace _Gen_detail { return _Nested_awaitable{_STD move(_Elem.range)}; } + template + requires same_as<_Yield_t<_Reference_t<_Rty, _Vty>>, _Yielded> + _NODISCARD auto yield_value(_RANGES elements_of&, _Unused> _Elem) noexcept { + using _Nested_awaitable = _Nested_awaitable_provider<_Rty, _Vty, _Alloc>::_Awaitable; + return _Nested_awaitable{_STD move(_Elem.range)}; + } + template <_RANGES input_range _Rng, class _Alloc> requires convertible_to<_RANGES range_reference_t<_Rng>, _Yielded> _NODISCARD auto yield_value(_RANGES elements_of<_Rng, _Alloc> _Elem) {