diff options
Diffstat (limited to 'contrib/llvm-project/libcxx/include/__numeric/adjacent_difference.h')
-rw-r--r-- | contrib/llvm-project/libcxx/include/__numeric/adjacent_difference.h | 57 |
1 files changed, 24 insertions, 33 deletions
diff --git a/contrib/llvm-project/libcxx/include/__numeric/adjacent_difference.h b/contrib/llvm-project/libcxx/include/__numeric/adjacent_difference.h index 31ffe9c04a1d..62b53342d9a4 100644 --- a/contrib/llvm-project/libcxx/include/__numeric/adjacent_difference.h +++ b/contrib/llvm-project/libcxx/include/__numeric/adjacent_difference.h @@ -24,50 +24,41 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD template <class _InputIterator, class _OutputIterator> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -adjacent_difference(_InputIterator __first, _InputIterator __last, _OutputIterator __result) -{ - if (__first != __last) - { - typename iterator_traits<_InputIterator>::value_type __acc(*__first); - *__result = __acc; - for (++__first, (void) ++__result; __first != __last; ++__first, (void) ++__result) - { - typename iterator_traits<_InputIterator>::value_type __val(*__first); +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +adjacent_difference(_InputIterator __first, _InputIterator __last, _OutputIterator __result) { + if (__first != __last) { + typename iterator_traits<_InputIterator>::value_type __acc(*__first); + *__result = __acc; + for (++__first, (void)++__result; __first != __last; ++__first, (void)++__result) { + typename iterator_traits<_InputIterator>::value_type __val(*__first); #if _LIBCPP_STD_VER >= 20 - *__result = __val - std::move(__acc); + *__result = __val - std::move(__acc); #else - *__result = __val - __acc; + *__result = __val - __acc; #endif - __acc = std::move(__val); - } + __acc = std::move(__val); } - return __result; + } + return __result; } template <class _InputIterator, class _OutputIterator, class _BinaryOperation> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -adjacent_difference(_InputIterator __first, _InputIterator __last, _OutputIterator __result, - _BinaryOperation __binary_op) -{ - if (__first != __last) - { - typename iterator_traits<_InputIterator>::value_type __acc(*__first); - *__result = __acc; - for (++__first, (void) ++__result; __first != __last; ++__first, (void) ++__result) - { - typename iterator_traits<_InputIterator>::value_type __val(*__first); +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator adjacent_difference( + _InputIterator __first, _InputIterator __last, _OutputIterator __result, _BinaryOperation __binary_op) { + if (__first != __last) { + typename iterator_traits<_InputIterator>::value_type __acc(*__first); + *__result = __acc; + for (++__first, (void)++__result; __first != __last; ++__first, (void)++__result) { + typename iterator_traits<_InputIterator>::value_type __val(*__first); #if _LIBCPP_STD_VER >= 20 - *__result = __binary_op(__val, std::move(__acc)); + *__result = __binary_op(__val, std::move(__acc)); #else - *__result = __binary_op(__val, __acc); + *__result = __binary_op(__val, __acc); #endif - __acc = std::move(__val); - } + __acc = std::move(__val); } - return __result; + } + return __result; } _LIBCPP_END_NAMESPACE_STD |