diff options
Diffstat (limited to 'libcxx/include/__iterator/advance.h')
| -rw-r--r-- | libcxx/include/__iterator/advance.h | 22 | 
1 files changed, 13 insertions, 9 deletions
diff --git a/libcxx/include/__iterator/advance.h b/libcxx/include/__iterator/advance.h index 4b8b0dc970a1..154c2736f313 100644 --- a/libcxx/include/__iterator/advance.h +++ b/libcxx/include/__iterator/advance.h @@ -11,16 +11,20 @@  #define _LIBCPP___ITERATOR_ADVANCE_H  #include <__assert> +#include <__concepts/assignable.h> +#include <__concepts/same_as.h>  #include <__config>  #include <__iterator/concepts.h>  #include <__iterator/incrementable_traits.h>  #include <__iterator/iterator_traits.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_integral.h> +#include <__utility/convert_to_integral.h> +#include <__utility/declval.h>  #include <__utility/move.h>  #include <__utility/unreachable.h> -#include <concepts>  #include <cstdlib>  #include <limits> -#include <type_traits>  #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)  #  pragma GCC system_header @@ -29,14 +33,14 @@  _LIBCPP_BEGIN_NAMESPACE_STD  template <class _InputIter> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX14 +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17  void __advance(_InputIter& __i, typename iterator_traits<_InputIter>::difference_type __n, input_iterator_tag) {    for (; __n > 0; --__n)      ++__i;  }  template <class _BiDirIter> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX14 +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17  void __advance(_BiDirIter& __i, typename iterator_traits<_BiDirIter>::difference_type __n, bidirectional_iterator_tag) {    if (__n >= 0)      for (; __n > 0; --__n) @@ -47,16 +51,16 @@ void __advance(_BiDirIter& __i, typename iterator_traits<_BiDirIter>::difference  }  template <class _RandIter> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX14 +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17  void __advance(_RandIter& __i, typename iterator_traits<_RandIter>::difference_type __n, random_access_iterator_tag) {    __i += __n;  }  template <      class _InputIter, class _Distance, -    class _IntegralDistance = decltype(_VSTD::__convert_to_integral(declval<_Distance>())), +    class _IntegralDistance = decltype(_VSTD::__convert_to_integral(std::declval<_Distance>())),      class = __enable_if_t<is_integral<_IntegralDistance>::value> > -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX14 +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17  void advance(_InputIter& __i, _Distance __orig_n) {    typedef typename iterator_traits<_InputIter>::difference_type _Difference;    _Difference __n = static_cast<_Difference>(_VSTD::__convert_to_integral(__orig_n)); @@ -65,7 +69,7 @@ void advance(_InputIter& __i, _Distance __orig_n) {    _VSTD::__advance(__i, __n, typename iterator_traits<_InputIter>::iterator_category());  } -#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) +#if _LIBCPP_STD_VER > 17  // [range.iter.op.advance] @@ -192,7 +196,7 @@ inline namespace __cpo {  } // namespace __cpo  } // namespace ranges -#endif // _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) +#endif // _LIBCPP_STD_VER > 17  _LIBCPP_END_NAMESPACE_STD  | 
