diff --git a/include/boost/intrusive/detail/iterator.hpp b/include/boost/intrusive/detail/iterator.hpp index 74f08cc..c25be43 100644 --- a/include/boost/intrusive/detail/iterator.hpp +++ b/include/boost/intrusive/detail/iterator.hpp @@ -114,11 +114,11 @@ struct iterator_disable_if_tag template struct iterator_enable_if_convertible_tag : ::boost::move_detail::enable_if_c - < ::boost::move_detail::is_convertible + < ::boost::move_detail::is_same_or_convertible < typename boost::intrusive::iterator_traits::iterator_category , Tag >::value && - !::boost::move_detail::is_convertible + !::boost::move_detail::is_same_or_convertible < typename boost::intrusive::iterator_traits::iterator_category , Tag2 >::value @@ -177,7 +177,7 @@ BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_tag BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag - ::type + ::type iterator_advance(InputIt& it, Distance n) { while(n--) @@ -186,7 +186,7 @@ BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag template BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag - ::type + ::type iterator_advance(InputIt& it, Distance n) { while(n--) @@ -195,7 +195,7 @@ BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag template BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag - ::type + ::type iterator_advance(InputIt& it, Distance n) { while(n--) @@ -204,7 +204,7 @@ BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag template BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag - ::type + ::type iterator_advance(InputIt& it, Distance n) { for (; 0 < n; --n) @@ -217,7 +217,7 @@ class fake{}; template BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag - ::type + ::type iterator_advance(InputIt& it, Distance n) { it += n;