mirror of
https://github.com/boostorg/iterator.git
synced 2025-07-30 21:07:20 +02:00
Merge pull request #27 from Lastique/advance_generic_distance
Use a separate template parameter for distance in advance().
This commit is contained in:
@ -9,17 +9,16 @@
|
|||||||
|
|
||||||
#include <boost/config.hpp>
|
#include <boost/config.hpp>
|
||||||
#include <boost/iterator/iterator_categories.hpp>
|
#include <boost/iterator/iterator_categories.hpp>
|
||||||
#include <boost/iterator/iterator_traits.hpp>
|
|
||||||
|
|
||||||
namespace boost {
|
namespace boost {
|
||||||
namespace iterators {
|
namespace iterators {
|
||||||
|
|
||||||
namespace detail {
|
namespace detail {
|
||||||
template <typename InputIterator>
|
template <typename InputIterator, typename Distance>
|
||||||
inline BOOST_CXX14_CONSTEXPR void
|
inline BOOST_CXX14_CONSTEXPR void
|
||||||
advance_impl(
|
advance_impl(
|
||||||
InputIterator& it
|
InputIterator& it
|
||||||
, typename iterator_difference<InputIterator>::type n
|
, Distance n
|
||||||
, incrementable_traversal_tag
|
, incrementable_traversal_tag
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -29,11 +28,11 @@ namespace iterators {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename BidirectionalIterator>
|
template <typename BidirectionalIterator, typename Distance>
|
||||||
inline BOOST_CXX14_CONSTEXPR void
|
inline BOOST_CXX14_CONSTEXPR void
|
||||||
advance_impl(
|
advance_impl(
|
||||||
BidirectionalIterator& it
|
BidirectionalIterator& it
|
||||||
, typename iterator_difference<BidirectionalIterator>::type n
|
, Distance n
|
||||||
, bidirectional_traversal_tag
|
, bidirectional_traversal_tag
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -51,11 +50,11 @@ namespace iterators {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename RandomAccessIterator>
|
template <typename RandomAccessIterator, typename Distance>
|
||||||
inline BOOST_CXX14_CONSTEXPR void
|
inline BOOST_CXX14_CONSTEXPR void
|
||||||
advance_impl(
|
advance_impl(
|
||||||
RandomAccessIterator& it
|
RandomAccessIterator& it
|
||||||
, typename iterator_difference<RandomAccessIterator>::type n
|
, Distance n
|
||||||
, random_access_traversal_tag
|
, random_access_traversal_tag
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -64,9 +63,9 @@ namespace iterators {
|
|||||||
}
|
}
|
||||||
|
|
||||||
namespace advance_adl_barrier {
|
namespace advance_adl_barrier {
|
||||||
template <typename InputIterator>
|
template <typename InputIterator, typename Distance>
|
||||||
inline BOOST_CXX14_CONSTEXPR void
|
inline BOOST_CXX14_CONSTEXPR void
|
||||||
advance(InputIterator& it, typename iterator_difference<InputIterator>::type n)
|
advance(InputIterator& it, Distance n)
|
||||||
{
|
{
|
||||||
detail::advance_impl(
|
detail::advance_impl(
|
||||||
it, n, typename iterator_traversal<InputIterator>::type()
|
it, n, typename iterator_traversal<InputIterator>::type()
|
||||||
|
Reference in New Issue
Block a user