@@ -71,20 +71,18 @@ concept __constructible_from_iter_pair =
7171 derived_from<typename iterator_traits<iterator_t <_Range>>::iterator_category, input_iterator_tag> &&
7272 constructible_from<_Container, iterator_t <_Range>, sentinel_t <_Range>, _Args...>;
7373
74- template <class _Container >
75- constexpr auto __container_append (_Container& __c) {
76- return [&__c]<class _Ref >(_Ref&& __ref) {
77- if constexpr (requires { __c.emplace_back (std::declval<_Ref>()); })
78- __c.emplace_back (std::forward<_Ref>(__ref));
79- else if constexpr (requires { __c.push_back (std::declval<_Ref>()); })
80- __c.push_back (std::forward<_Ref>(__ref));
81- else if constexpr (requires { __c.emplace (__c.end (), std::declval<_Ref>()); })
82- __c.emplace (__c.end (), std::forward<_Ref>(__ref));
83- else {
84- static_assert (requires { __c.insert (__c.end (), std::declval<_Ref>()); });
85- __c.insert (__c.end (), std::forward<_Ref>(__ref));
86- }
87- };
74+ template <class _Ref , class _Container >
75+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto __container_append (_Container& __c) {
76+ if constexpr (requires { __c.emplace_back (std::declval<_Ref>()); })
77+ return [&__c](_Ref&& __ref) { __c.emplace_back (std::forward<_Ref>(__ref)); };
78+ else if constexpr (requires { __c.push_back (std::declval<_Ref>()); })
79+ return [&__c](_Ref&& __ref) { __c.push_back (std::forward<_Ref>(__ref)); };
80+ else if constexpr (requires { __c.emplace (__c.end (), std::declval<_Ref>()); })
81+ return [&__c](_Ref&& __ref) { __c.emplace (__c.end (), std::forward<_Ref>(__ref)); };
82+ else {
83+ static_assert (requires { __c.insert (__c.end (), std::declval<_Ref>()); });
84+ return [&__c](_Ref&& __ref) { __c.insert (__c.end (), std::forward<_Ref>(__ref)); };
85+ }
8886}
8987
9088template <class >
@@ -126,7 +124,7 @@ template <class _Container, input_range _Range, class... _Args>
126124 __result.reserve (static_cast <range_size_t <_Container>>(ranges::size (__range)));
127125 }
128126
129- ranges::for_each (__range, ranges::__container_append (__result));
127+ ranges::for_each (__range, ranges::__container_append<ranges:: range_reference_t <_Range>> (__result));
130128 return __result;
131129 } else {
132130 static_assert (__always_false<_Container>, " ranges::to: unable to convert to the given container type." );
0 commit comments