Skip to content

Commit 4589580

Browse files
committed
forward std::generate to std::for_each
1 parent 2526110 commit 4589580

File tree

1 file changed

+5
-27
lines changed

1 file changed

+5
-27
lines changed

libcxx/include/__algorithm/generate.h

Lines changed: 5 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -9,42 +9,20 @@
99
#ifndef _LIBCPP___ALGORITHM_GENERATE_H
1010
#define _LIBCPP___ALGORITHM_GENERATE_H
1111

12-
#include <__algorithm/for_each_segment.h>
12+
#include <__algorithm/for_each.h>
1313
#include <__config>
14-
#include <__iterator/segmented_iterator.h>
15-
#include <__type_traits/enable_if.h>
14+
1615

1716
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
1817
# pragma GCC system_header
1918
#endif
2019

2120
_LIBCPP_BEGIN_NAMESPACE_STD
2221

23-
template <class _ForwardIterator, class _Sent, class _Generator>
24-
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void
25-
__generate(_ForwardIterator __first, _Sent __last, _Generator& __gen) {
26-
for (; __first != __last; ++__first)
27-
*__first = __gen();
28-
}
29-
30-
#ifndef _LIBCPP_CXX03_LANG
31-
template <class _SegmentedIterator,
32-
class _Generator,
33-
__enable_if_t<__is_segmented_iterator_v<_SegmentedIterator>, int> = 0>
34-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20
35-
_SegmentedIterator __generate(_SegmentedIterator __first, _SegmentedIterator __last, _Generator& __gen) {
36-
using __local_iterator_t = typename __segmented_iterator_traits<_SegmentedIterator>::__local_iterator;
37-
std::__for_each_segment(__first, __last, [&](__local_iterator_t __lfirst, __local_iterator_t __llast) {
38-
std::__generate(__lfirst, __llast, __gen);
39-
});
40-
return __last;
41-
}
42-
#endif // !_LIBCPP_CXX03_LANG
43-
4422
template <class _ForwardIterator, class _Generator>
45-
inline _LIBCPP_HIDE_FROM_ABI
46-
_LIBCPP_CONSTEXPR_SINCE_CXX20 void generate(_ForwardIterator __first, _ForwardIterator __last, _Generator __gen) {
47-
std::__generate(__first, __last, __gen);
23+
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void
24+
generate(_ForwardIterator __first, _ForwardIterator __last, _Generator __gen) {
25+
std::for_each(__first, __last, [&](auto& __element) { __element = __gen(); });
4826
}
4927

5028
_LIBCPP_END_NAMESPACE_STD

0 commit comments

Comments
 (0)