11#ifndef NDARRAY_DETAIL_StridedIterator_h_INCLUDED
12#define NDARRAY_DETAIL_StridedIterator_h_INCLUDED
21#include <boost/iterator/iterator_facade.hpp>
34 T, boost::random_access_traversal_tag
39 typedef T & Reference;
43 StridedIterator(T * data, Offset stride) : _data(data), _stride(stride) {}
49 BOOST_STATIC_ASSERT((boost::is_convertible<U*,T*>::value));
55 _stride = other._stride;
62 BOOST_STATIC_ASSERT((boost::is_convertible<U*,T*>::value));
64 _stride = other._stride;
70 friend class boost::iterator_core_access;
74 Reference dereference()
const {
return *_data; }
76 void increment() { _data += _stride; }
77 void decrement() { _data -= _stride; }
78 void advance(Offset n) { _data += _stride * n; }
82 return std::distance(_data, other._data) / _stride;
87 return _data == other._data;
Definition StridedIterator.h:36
Forward declarations and default template parameters for ndarray.