@@ -60,20 +60,6 @@ constexpr bool __container_appendable = requires(_Container& __c, _Ref&& __ref)
6060 requires { __c.insert (__c.end (), std::forward<_Ref>(__ref)); });
6161};
6262
63- template <class _Container >
64- _LIBCPP_HIDE_FROM_ABI constexpr auto __container_append (_Container& __c) {
65- return [&__c]<class _Ref >(_Ref&& __ref) {
66- if constexpr (requires { __c.emplace_back (declval<_Ref>()); })
67- __c.emplace_back (std::forward<_Ref>(__ref));
68- else if constexpr (requires { __c.push_back (declval<_Ref>()); })
69- __c.push_back (std::forward<_Ref>(__ref));
70- else if constexpr (requires { __c.emplace (__c.end (), declval<_Ref>()); })
71- __c.emplace (__c.end (), std::forward<_Ref>(__ref));
72- else if constexpr (requires { __c.insert (__c.end (), declval<_Ref>()); })
73- __c.insert (__c.end (), std::forward<_Ref>(__ref));
74- };
75- }
76-
7763// Note: making this a concept allows short-circuiting the second condition.
7864template <class _Container , class _Range >
7965concept __try_non_recursive_conversion =
@@ -124,8 +110,19 @@ template <class _Container, input_range _Range, class... _Args>
124110 __result.reserve (static_cast <range_size_t <_Container>>(ranges::size (__range)));
125111 }
126112
127- ranges::for_each (__range, ranges::__container_append (__result));
128-
113+ for (auto && __ref : __range) {
114+ using _Ref = decltype (__ref);
115+ if constexpr (requires { __result.emplace_back (declval<_Ref>()); }) {
116+ __result.emplace_back (std::forward<_Ref>(__ref));
117+ } else if constexpr (requires { __result.push_back (declval<_Ref>()); }) {
118+ __result.push_back (std::forward<_Ref>(__ref));
119+ } else if constexpr (requires { __result.emplace (__result.end (), declval<_Ref>()); }) {
120+ __result.emplace (__result.end (), std::forward<_Ref>(__ref));
121+ } else {
122+ static_assert (requires { __result.insert (__result.end (), declval<_Ref>()); });
123+ __result.insert (__result.end (), std::forward<_Ref>(__ref));
124+ }
125+ }
129126 return __result;
130127
131128 } else {
0 commit comments