1 // Copyright (C) 2017 Michel Morin.
3 // Distributed under the Boost Software License, Version 1.0.
4 // (See accompanying file LICENSE_1_0.txt or copy at
5 // http://www.boost.org/LICENSE_1_0.txt)
7 #ifndef BOOST_ITERATOR_ADVANCE_HPP
8 #define BOOST_ITERATOR_ADVANCE_HPP
10 #include <boost/config.hpp>
11 #include <boost/iterator/iterator_categories.hpp>
17 template <typename InputIterator, typename Distance>
18 inline BOOST_CXX14_CONSTEXPR void
22 , incrementable_traversal_tag
31 template <typename BidirectionalIterator, typename Distance>
32 inline BOOST_CXX14_CONSTEXPR void
34 BidirectionalIterator& it
36 , bidirectional_traversal_tag
53 template <typename RandomAccessIterator, typename Distance>
54 inline BOOST_CXX14_CONSTEXPR void
56 RandomAccessIterator& it
58 , random_access_traversal_tag
65 namespace advance_adl_barrier {
66 template <typename InputIterator, typename Distance>
67 inline BOOST_CXX14_CONSTEXPR void
68 advance(InputIterator& it, Distance n)
71 it, n, typename iterator_traversal<InputIterator>::type()
76 using namespace advance_adl_barrier;
78 } // namespace iterators
80 using namespace iterators::advance_adl_barrier;