13#ifndef INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_ITERATOR_ADVANCE_HPP_
14#define INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_ITERATOR_ADVANCE_HPP_
17#include "arene/base/compiler_support/cpp14_inline.hpp"
18#include "arene/base/constraints/constraints.hpp"
19#include "arene/base/contracts/contract.hpp"
20#include "arene/base/stdlib_choice/enable_if.hpp"
21#include "arene/base/stdlib_choice/iterator_tags.hpp"
22#include "arene/base/stdlib_choice/iterator_traits.hpp"
23#include "arene/base/type_traits/iterator_category_traits.hpp"
29namespace advance_detail {
44template <
typename Iterator>
45constexpr void do_advance(
47 typename std::iterator_traits<Iterator>::difference_type steps,
48 std::input_iterator_tag
49)
noexcept(
noexcept(++itr)) {
50 ARENE_PRECONDITION(steps >= 0);
70template <
typename Iterator>
71constexpr void do_advance(
73 typename std::iterator_traits<Iterator>::difference_type steps,
74 std::bidirectional_iterator_tag
75)
noexcept(
noexcept(++itr) &&
noexcept(--itr)) {
100template <
typename Iterator>
101constexpr void do_advance(
103 typename std::iterator_traits<Iterator>::difference_type steps,
104 std::random_access_iterator_tag
105)
noexcept(
noexcept(itr += steps)) {
127 template <
typename Iterator, constraints<std::enable_if_t<is_input_iterator_v<Iterator>>> =
nullptr>
128 constexpr void operator()(Iterator& itr,
typename std::iterator_traits<Iterator>::difference_type steps)
const
129 noexcept(
noexcept(::arene::base::advance_detail::do_advance(
132 typename std::iterator_traits<Iterator>::iterator_category{}
134 ::arene::base::advance_detail::do_advance(itr, steps,
typename std::iterator_traits<Iterator>::iterator_category{});
146ARENE_CPP14_INLINE_VARIABLE(advance_detail::advance, advance);
Definition array_exceptions_disabled.cpp:11
Copyright 2026, Toyota Motor Corporation.
Definition array_exceptions_disabled.cpp:10