|
9 | 9 | #ifndef _LIBCPP___ALGORITHM_GENERATE_H |
10 | 10 | #define _LIBCPP___ALGORITHM_GENERATE_H |
11 | 11 |
|
12 | | -#include <__algorithm/for_each_segment.h> |
| 12 | +#include <__algorithm/for_each.h> |
13 | 13 | #include <__config> |
14 | | -#include <__iterator/segmented_iterator.h> |
15 | | -#include <__type_traits/enable_if.h> |
| 14 | + |
16 | 15 |
|
17 | 16 | #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) |
18 | 17 | # pragma GCC system_header |
19 | 18 | #endif |
20 | 19 |
|
21 | 20 | _LIBCPP_BEGIN_NAMESPACE_STD |
22 | 21 |
|
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 | | - |
44 | 22 | 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(); }); |
48 | 26 | } |
49 | 27 |
|
50 | 28 | _LIBCPP_END_NAMESPACE_STD |
|
0 commit comments