Skip to content

Commit dfbe5ea

Browse files
authored
LWG-3899 co_yielding elements of an lvalue generator is unnecessarily inefficient (#5303)
1 parent a4e32ac commit dfbe5ea

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

stl/inc/generator

+7
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,13 @@ namespace _Gen_detail {
286286
return _Nested_awaitable{_STD move(_Elem.range)};
287287
}
288288

289+
template <class _Rty, class _Vty, class _Alloc, class _Unused>
290+
requires same_as<_Yield_t<_Reference_t<_Rty, _Vty>>, _Yielded>
291+
_NODISCARD auto yield_value(_RANGES elements_of<generator<_Rty, _Vty, _Alloc>&, _Unused> _Elem) noexcept {
292+
using _Nested_awaitable = _Nested_awaitable_provider<_Rty, _Vty, _Alloc>::_Awaitable;
293+
return _Nested_awaitable{_STD move(_Elem.range)};
294+
}
295+
289296
template <_RANGES input_range _Rng, class _Alloc>
290297
requires convertible_to<_RANGES range_reference_t<_Rng>, _Yielded>
291298
_NODISCARD auto yield_value(_RANGES elements_of<_Rng, _Alloc> _Elem) {

0 commit comments

Comments
 (0)