diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2023-07-26 19:03:47 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2023-07-26 19:04:23 +0000 | 
| commit | 7fa27ce4a07f19b07799a767fc29416f3b625afb (patch) | |
| tree | 27825c83636c4de341eb09a74f49f5d38a15d165 /libcxx/include/__algorithm/ranges_unique.h | |
| parent | e3b557809604d036af6e00c60f012c2025b59a5e (diff) | |
Diffstat (limited to 'libcxx/include/__algorithm/ranges_unique.h')
| -rw-r--r-- | libcxx/include/__algorithm/ranges_unique.h | 52 | 
1 files changed, 25 insertions, 27 deletions
| diff --git a/libcxx/include/__algorithm/ranges_unique.h b/libcxx/include/__algorithm/ranges_unique.h index be427ccf7fad..b17e01fc5057 100644 --- a/libcxx/include/__algorithm/ranges_unique.h +++ b/libcxx/include/__algorithm/ranges_unique.h @@ -32,48 +32,46 @@  #  pragma GCC system_header  #endif -#if _LIBCPP_STD_VER > 17 +#if _LIBCPP_STD_VER >= 20  _LIBCPP_BEGIN_NAMESPACE_STD  namespace ranges {  namespace __unique { -  struct __fn { -    template < -        permutable _Iter, -        sentinel_for<_Iter> _Sent, -        class _Proj                                                  = identity, -        indirect_equivalence_relation<projected<_Iter, _Proj>> _Comp = ranges::equal_to> -    _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr subrange<_Iter> -    operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { -      auto __ret = std::__unique<_RangeAlgPolicy>( -          std::move(__first), std::move(__last), std::__make_projected(__comp, __proj)); -      return {std::move(__ret.first), std::move(__ret.second)}; -    } +struct __fn { +  template <permutable _Iter, +            sentinel_for<_Iter> _Sent, +            class _Proj                                                  = identity, +            indirect_equivalence_relation<projected<_Iter, _Proj>> _Comp = ranges::equal_to> +  _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr subrange<_Iter> +  operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { +    auto __ret = +        std::__unique<_RangeAlgPolicy>(std::move(__first), std::move(__last), std::__make_projected(__comp, __proj)); +    return {std::move(__ret.first), std::move(__ret.second)}; +  } -    template < -        forward_range _Range, -        class _Proj                                                               = identity, -        indirect_equivalence_relation<projected<iterator_t<_Range>, _Proj>> _Comp = ranges::equal_to> -      requires permutable<iterator_t<_Range>> -    _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr borrowed_subrange_t<_Range> -    operator()(_Range&& __range, _Comp __comp = {}, _Proj __proj = {}) const { -      auto __ret = std::__unique<_RangeAlgPolicy>( -          ranges::begin(__range), ranges::end(__range), std::__make_projected(__comp, __proj)); -      return {std::move(__ret.first), std::move(__ret.second)}; -    } -  }; +  template <forward_range _Range, +            class _Proj                                                               = identity, +            indirect_equivalence_relation<projected<iterator_t<_Range>, _Proj>> _Comp = ranges::equal_to> +    requires permutable<iterator_t<_Range>> +  _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr borrowed_subrange_t<_Range> +  operator()(_Range&& __range, _Comp __comp = {}, _Proj __proj = {}) const { +    auto __ret = std::__unique<_RangeAlgPolicy>( +        ranges::begin(__range), ranges::end(__range), std::__make_projected(__comp, __proj)); +    return {std::move(__ret.first), std::move(__ret.second)}; +  } +};  } // namespace __unique  inline namespace __cpo { -  inline constexpr auto unique = __unique::__fn{}; +inline constexpr auto unique = __unique::__fn{};  } // namespace __cpo  } // namespace ranges  _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_STD_VER > 17 +#endif // _LIBCPP_STD_VER >= 20  #endif // _LIBCPP___ALGORITHM_RANGES_UNIQUE_H | 
