summaryrefslogtreecommitdiff
path: root/boost/multi_array/iterator.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/multi_array/iterator.hpp')
-rw-r--r--boost/multi_array/iterator.hpp18
1 files changed, 10 insertions, 8 deletions
diff --git a/boost/multi_array/iterator.hpp b/boost/multi_array/iterator.hpp
index 59e7724f55..c77d34ef96 100644
--- a/boost/multi_array/iterator.hpp
+++ b/boost/multi_array/iterator.hpp
@@ -44,16 +44,18 @@ struct operator_arrow_proxy
mutable T value_;
};
-template <typename T, typename TPtr, typename NumDims, typename Reference>
+template <typename T, typename TPtr, typename NumDims, typename Reference,
+ typename IteratorCategory>
class array_iterator;
-template <typename T, typename TPtr, typename NumDims, typename Reference>
+template <typename T, typename TPtr, typename NumDims, typename Reference,
+ typename IteratorCategory>
class array_iterator
: public
iterator_facade<
- array_iterator<T,TPtr,NumDims,Reference>
+ array_iterator<T,TPtr,NumDims,Reference,IteratorCategory>
, typename associated_types<T,NumDims>::value_type
- , boost::random_access_traversal_tag
+ , IteratorCategory
, Reference
>
, private
@@ -69,7 +71,7 @@ class array_iterator
typedef detail::multi_array::associated_types<T,NumDims> access_t;
typedef iterator_facade<
- array_iterator<T,TPtr,NumDims,Reference>
+ array_iterator<T,TPtr,NumDims,Reference,IteratorCategory>
, typename detail::multi_array::associated_types<T,NumDims>::value_type
, boost::random_access_traversal_tag
, Reference
@@ -79,7 +81,7 @@ class array_iterator
typedef typename access_t::size_type size_type;
#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
- template <typename, typename, typename, typename>
+ template <typename, typename, typename, typename, typename>
friend class array_iterator;
#else
public:
@@ -105,9 +107,9 @@ public:
idx_(idx), base_(base), extents_(extents),
strides_(strides), index_base_(index_base) { }
- template <typename OPtr, typename ORef>
+ template <typename OPtr, typename ORef, typename Cat>
array_iterator(
- const array_iterator<T,OPtr,NumDims,ORef>& rhs
+ const array_iterator<T,OPtr,NumDims,ORef,Cat>& rhs
, typename boost::enable_if_convertible<OPtr,TPtr>::type* = 0
)
: idx_(rhs.idx_), base_(rhs.base_), extents_(rhs.extents_),