From 06d74a1709b078f779673c5f13f8b2bfda663253 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ion=20Gazta=C3=B1aga?= Date: Wed, 12 Jan 2022 00:58:41 +0100 Subject: [PATCH] Inject new Boost.Move iterator functions. --- include/boost/intrusive/detail/iterator.hpp | 29 ++++++++++++--------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/include/boost/intrusive/detail/iterator.hpp b/include/boost/intrusive/detail/iterator.hpp index 86da5aa..9421cc4 100644 --- a/include/boost/intrusive/detail/iterator.hpp +++ b/include/boost/intrusive/detail/iterator.hpp @@ -49,6 +49,11 @@ namespace boost { namespace intrusive { using boost::movelib::iterator_traits; +using boost::movelib::iter_difference; +using boost::movelib::iter_value; +using boost::movelib::iter_category; +using boost::movelib::iter_size; + //////////////////// // iterator @@ -115,7 +120,7 @@ struct get_std_category_from_tag template struct get_std_category_from_it - : get_std_category_from_tag< typename boost::intrusive::iterator_traits::iterator_category > + : get_std_category_from_tag< typename boost::intrusive::iter_category::type > {}; //////////////////////////////////////// @@ -163,12 +168,12 @@ struct iterator_enable_if_convertible_tag //////////////////////////////////////// template struct iterator_enable_if_tag_difference_type - : iterator_enable_if_tag::difference_type> + : iterator_enable_if_tag::type> {}; template struct iterator_disable_if_tag_difference_type - : iterator_disable_if_tag::difference_type> + : iterator_disable_if_tag::type> {}; //////////////////// @@ -177,7 +182,7 @@ struct iterator_disable_if_tag_difference_type template BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_tag::type - iterator_advance(InputIt& it, typename iterator_traits::difference_type n) + iterator_advance(InputIt& it, typename iter_difference::type n) { while(n--) ++it; @@ -185,7 +190,7 @@ BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_tag typename iterator_enable_if_tag::type - iterator_advance(InputIt& it, typename iterator_traits::difference_type n) + iterator_advance(InputIt& it, typename iter_difference::type n) { while(n--) ++it; @@ -193,7 +198,7 @@ typename iterator_enable_if_tag::type template BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_tag::type - iterator_advance(InputIt& it, typename iterator_traits::difference_type n) + iterator_advance(InputIt& it, typename iter_difference::type n) { for (; 0 < n; --n) ++it; @@ -210,7 +215,7 @@ BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_tag BOOST_INTRUSIVE_FORCEINLINE - void iterator_uadvance(It& it, typename iterator_traits::size_type n) + void iterator_uadvance(It& it, typename iter_size::type n) { (iterator_advance)(it, (typename iterator_traits::difference_type)n); } @@ -223,7 +228,7 @@ typename iterator_disable_if_tag_difference_type ::type iterator_distance(InputIt first, InputIt last) { - typename iterator_traits::difference_type off = 0; + typename iter_difference::type off = 0; while(first != last){ ++off; ++first; @@ -236,7 +241,7 @@ BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_tag_difference_type ::type iterator_distance(InputIt first, InputIt last) { - typename iterator_traits::difference_type off = last - first; + typename iter_difference::type off = last - first; return off; } @@ -245,10 +250,10 @@ BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_tag_difference_type //////////////////////////////////////// template -BOOST_INTRUSIVE_FORCEINLINE typename iterator_traits::size_type +BOOST_INTRUSIVE_FORCEINLINE typename iter_size::type iterator_udistance(It first, It last) { - return (typename iterator_traits::size_type)(iterator_distance)(first, last); + return (typename iter_size::type)(iterator_distance)(first, last); } //////////////////////////////////////// @@ -256,7 +261,7 @@ BOOST_INTRUSIVE_FORCEINLINE typename iterator_traits::size_type //////////////////////////////////////// template -BOOST_INTRUSIVE_FORCEINLINE InputIt iterator_next(InputIt it, typename iterator_traits::difference_type n) +BOOST_INTRUSIVE_FORCEINLINE InputIt iterator_next(InputIt it, typename iter_difference::type n) { (iterator_advance)(it, n); return it;