summaryrefslogtreecommitdiff
path: root/boost/intrusive/detail/iterator.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/intrusive/detail/iterator.hpp')
-rw-r--r--boost/intrusive/detail/iterator.hpp31
1 files changed, 16 insertions, 15 deletions
diff --git a/boost/intrusive/detail/iterator.hpp b/boost/intrusive/detail/iterator.hpp
index 9f0fe606f4..2ae6abb7d0 100644
--- a/boost/intrusive/detail/iterator.hpp
+++ b/boost/intrusive/detail/iterator.hpp
@@ -23,6 +23,7 @@
#include <cstddef>
#include <boost/intrusive/detail/std_fwd.hpp>
+#include <boost/intrusive/detail/workaround.hpp>
#include <boost/move/detail/iterator_traits.hpp>
#include <boost/move/detail/meta_utils_core.hpp>
@@ -34,14 +35,14 @@ using boost::movelib::iterator_traits;
////////////////////
// iterator
////////////////////
-template<class Category, class T, class Distance, class Pointer = T*, class Reference = T&>
+template<class Category, class T, class Difference, class Pointer, class Reference>
struct iterator
{
- typedef Category iterator_category;
- typedef T value_type;
- typedef Distance difference_type;
- typedef Pointer pointer;
- typedef Reference reference;
+ typedef Category iterator_category;
+ typedef T value_type;
+ typedef Difference difference_type;
+ typedef Pointer pointer;
+ typedef Reference reference;
};
////////////////////////////////////////
@@ -83,7 +84,7 @@ struct iterator_disable_if_tag_difference_type
////////////////////
// advance
////////////////////
-template<class InputIt, class Distance> inline
+template<class InputIt, class Distance>
typename iterator_enable_if_tag<InputIt, std::input_iterator_tag>::type
iterator_advance(InputIt& it, Distance n)
{
@@ -91,7 +92,7 @@ typename iterator_enable_if_tag<InputIt, std::input_iterator_tag>::type
++it;
}
-template<class InputIt, class Distance> inline
+template<class InputIt, class Distance>
typename iterator_enable_if_tag<InputIt, std::forward_iterator_tag>::type
iterator_advance(InputIt& it, Distance n)
{
@@ -99,7 +100,7 @@ typename iterator_enable_if_tag<InputIt, std::forward_iterator_tag>::type
++it;
}
-template<class InputIt, class Distance> inline
+template<class InputIt, class Distance>
typename iterator_enable_if_tag<InputIt, std::bidirectional_iterator_tag>::type
iterator_advance(InputIt& it, Distance n)
{
@@ -109,8 +110,8 @@ typename iterator_enable_if_tag<InputIt, std::bidirectional_iterator_tag>::type
--it;
}
-template<class InputIt, class Distance> inline
-typename iterator_enable_if_tag<InputIt, std::random_access_iterator_tag>::type
+template<class InputIt, class Distance>
+BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_tag<InputIt, std::random_access_iterator_tag>::type
iterator_advance(InputIt& it, Distance n)
{
it += n;
@@ -132,8 +133,8 @@ typename iterator_disable_if_tag_difference_type
return off;
}
-template<class InputIt> inline
-typename iterator_enable_if_tag_difference_type
+template<class InputIt>
+BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_tag_difference_type
<InputIt, std::random_access_iterator_tag>::type
iterator_distance(InputIt first, InputIt last)
{
@@ -142,11 +143,11 @@ typename iterator_enable_if_tag_difference_type
}
template<class I>
-typename iterator_traits<I>::pointer iterator_arrow_result(const I &i)
+BOOST_INTRUSIVE_FORCEINLINE typename iterator_traits<I>::pointer iterator_arrow_result(const I &i)
{ return i.operator->(); }
template<class T>
-T * iterator_arrow_result(T *p)
+BOOST_INTRUSIVE_FORCEINLINE T * iterator_arrow_result(T *p)
{ return p; }
} //namespace intrusive