diff options
Diffstat (limited to 'libcxx/include/__algorithm/make_heap.h')
| -rw-r--r-- | libcxx/include/__algorithm/make_heap.h | 13 | 
1 files changed, 6 insertions, 7 deletions
| diff --git a/libcxx/include/__algorithm/make_heap.h b/libcxx/include/__algorithm/make_heap.h index bf9dd96756af..d66cfe2e5fc9 100644 --- a/libcxx/include/__algorithm/make_heap.h +++ b/libcxx/include/__algorithm/make_heap.h @@ -24,29 +24,28 @@  _LIBCPP_BEGIN_NAMESPACE_STD  template <class _AlgPolicy, class _Compare, class _RandomAccessIterator> -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX11 -void __make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare& __comp) { -  using _CompRef = typename __comp_ref_type<_Compare>::type; -  _CompRef __comp_ref = __comp; +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +void __make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare&& __comp) { +  __comp_ref_type<_Compare> __comp_ref = __comp;    using difference_type = typename iterator_traits<_RandomAccessIterator>::difference_type;    difference_type __n = __last - __first;    if (__n > 1) {      // start from the first parent, there is no need to consider children      for (difference_type __start = (__n - 2) / 2; __start >= 0; --__start) { -        std::__sift_down<_AlgPolicy, _CompRef>(__first, __comp_ref, __n, __first + __start); +        std::__sift_down<_AlgPolicy>(__first, __comp_ref, __n, __first + __start);      }    }  }  template <class _RandomAccessIterator, class _Compare> -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20  void make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) {    std::__make_heap<_ClassicAlgPolicy>(std::move(__first), std::move(__last), __comp);  }  template <class _RandomAccessIterator> -inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20  void make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) {    std::make_heap(std::move(__first), std::move(__last),        __less<typename iterator_traits<_RandomAccessIterator>::value_type>()); | 
