File tree Expand file tree Collapse file tree 1 file changed +13
-3
lines changed
libcxx/include/__algorithm Expand file tree Collapse file tree 1 file changed +13
-3
lines changed Original file line number Diff line number Diff line change 1111
1212#include < __algorithm/for_each.h>
1313#include < __config>
14- #include < __iterator/iterator_traits.h>
1514#include < __utility/forward.h>
1615
1716#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
2019
2120_LIBCPP_BEGIN_NAMESPACE_STD
2221
22+ template <typename _Generator>
23+ struct __fn {
24+ __fn (_Generator& __g) : __gen(__g) {}
25+
26+ template <typename _Tp>
27+ void operator ()(_Tp&& __element) const {
28+ std::forward<_Tp>(__element) = __gen ();
29+ }
30+
31+ _Generator& __gen;
32+ };
33+
2334template <class _ForwardIterator , class _Generator >
2435inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void
2536generate (_ForwardIterator __first, _ForwardIterator __last, _Generator __gen) {
26- typedef typename std::iterator_traits<_ForwardIterator>::value_type value_type;
27- std::for_each (__first, __last, [&](value_type&& __element) { std::forward<value_type>(__element) = __gen (); });
37+ std::for_each (__first, __last, __fn<_Generator>(__gen));
2838}
2939
3040_LIBCPP_END_NAMESPACE_STD
You can’t perform that action at this time.
0 commit comments