diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2023-09-02 21:17:18 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2024-01-07 17:46:17 +0000 | 
| commit | fe013be447cd855ccaf6094a1d06aea570450629 (patch) | |
| tree | 9adc1e0a5d25b6280995832bb29d592fb80554a6 /contrib/llvm-project/libcxx/include/__algorithm/ranges_replace_copy.h | |
| parent | 2f3b605b2e159522ecab77fd518e8139aaf581e9 (diff) | |
Diffstat (limited to 'contrib/llvm-project/libcxx/include/__algorithm/ranges_replace_copy.h')
| -rw-r--r-- | contrib/llvm-project/libcxx/include/__algorithm/ranges_replace_copy.h | 79 | 
1 files changed, 38 insertions, 41 deletions
diff --git a/contrib/llvm-project/libcxx/include/__algorithm/ranges_replace_copy.h b/contrib/llvm-project/libcxx/include/__algorithm/ranges_replace_copy.h index f87a236fbd0d..124ff8f2c559 100644 --- a/contrib/llvm-project/libcxx/include/__algorithm/ranges_replace_copy.h +++ b/contrib/llvm-project/libcxx/include/__algorithm/ranges_replace_copy.h @@ -26,7 +26,7 @@  #  pragma GCC system_header  #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20  _LIBCPP_BEGIN_NAMESPACE_STD @@ -37,55 +37,52 @@ using replace_copy_result = in_out_result<_InIter, _OutIter>;  namespace __replace_copy { -  struct __fn { -    template <input_iterator _InIter, -              sentinel_for<_InIter> _Sent, -              class _OldType, -              class _NewType, -              output_iterator<const _NewType&> _OutIter, -              class _Proj = identity> -      requires indirectly_copyable<_InIter, _OutIter> && -               indirect_binary_predicate<ranges::equal_to, projected<_InIter, _Proj>, const _OldType*> -    _LIBCPP_HIDE_FROM_ABI constexpr replace_copy_result<_InIter, _OutIter> -    operator()(_InIter __first, -               _Sent __last, -               _OutIter __result, -               const _OldType& __old_value, -               const _NewType& __new_value, -               _Proj __proj = {}) const { -      auto __pred = [&](const auto& __value) { return __value == __old_value; }; -      return ranges::__replace_copy_if_impl( -          std::move(__first), std::move(__last), std::move(__result), __pred, __new_value, __proj); -    } +struct __fn { +  template <input_iterator _InIter, +            sentinel_for<_InIter> _Sent, +            class _OldType, +            class _NewType, +            output_iterator<const _NewType&> _OutIter, +            class _Proj = identity> +    requires indirectly_copyable<_InIter, _OutIter> && +             indirect_binary_predicate<ranges::equal_to, projected<_InIter, _Proj>, const _OldType*> +  _LIBCPP_HIDE_FROM_ABI constexpr replace_copy_result<_InIter, _OutIter> +  operator()(_InIter __first, +             _Sent __last, +             _OutIter __result, +             const _OldType& __old_value, +             const _NewType& __new_value, +             _Proj __proj = {}) const { +    auto __pred = [&](const auto& __value) { return __value == __old_value; }; +    return ranges::__replace_copy_if_impl( +        std::move(__first), std::move(__last), std::move(__result), __pred, __new_value, __proj); +  } -    template <input_range _Range, -              class _OldType, -              class _NewType, -              output_iterator<const _NewType&> _OutIter, -              class _Proj = identity> -      requires indirectly_copyable<iterator_t<_Range>, _OutIter> && -               indirect_binary_predicate<ranges::equal_to, projected<iterator_t<_Range>, _Proj>, const _OldType*> -    _LIBCPP_HIDE_FROM_ABI constexpr replace_copy_result<borrowed_iterator_t<_Range>, _OutIter> -    operator()(_Range&& __range, -               _OutIter __result, -               const _OldType& __old_value, -               const _NewType& __new_value, -               _Proj __proj = {}) const { -      auto __pred = [&](const auto& __value) { return __value == __old_value; }; -      return ranges::__replace_copy_if_impl( -          ranges::begin(__range), ranges::end(__range), std::move(__result), __pred, __new_value, __proj); -    } -  }; +  template <input_range _Range, +            class _OldType, +            class _NewType, +            output_iterator<const _NewType&> _OutIter, +            class _Proj = identity> +    requires indirectly_copyable<iterator_t<_Range>, _OutIter> && +             indirect_binary_predicate<ranges::equal_to, projected<iterator_t<_Range>, _Proj>, const _OldType*> +  _LIBCPP_HIDE_FROM_ABI constexpr replace_copy_result<borrowed_iterator_t<_Range>, _OutIter> operator()( +      _Range&& __range, _OutIter __result, const _OldType& __old_value, const _NewType& __new_value, _Proj __proj = {}) +      const { +    auto __pred = [&](const auto& __value) { return __value == __old_value; }; +    return ranges::__replace_copy_if_impl( +        ranges::begin(__range), ranges::end(__range), std::move(__result), __pred, __new_value, __proj); +  } +};  } // namespace __replace_copy  inline namespace __cpo { -  inline constexpr auto replace_copy = __replace_copy::__fn{}; +inline constexpr auto replace_copy = __replace_copy::__fn{};  } // namespace __cpo  } // namespace ranges  _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20  #endif // _LIBCPP___ALGORITHM_RANGES_REPLACE_COPY_H  | 
