21 #ifndef gslpp_iterator_hh
22 #define gslpp_iterator_hh
52 m_current += m_stride;
64 m_current -= m_stride;
75 m_current += dist * m_stride;
80 m_current -= dist * m_stride;
85 return m_current[idx * m_stride];
89 assert(m_stride == other.m_stride);
90 return (m_current - other.m_current) / m_stride;
94 assert(m_stride == other.m_stride);
95 return m_current == other.m_current;
99 assert(m_stride == other.m_stride);
100 return m_current != other.m_current;
104 assert(m_stride == other.m_stride);
105 return m_current < other.m_current;
109 assert(m_stride == other.m_stride);
110 return m_current <= other.m_current;
114 assert(m_stride == other.m_stride);
115 return m_current > other.m_current;
119 assert(m_stride == other.m_stride);
120 return m_current >= other.m_current;
161 m_current(base), m_stride(stride)
168 m_current(other.m_current),
169 m_stride(other.m_stride)
188 m_current += m_stride;
199 m_current -= m_stride;
210 m_current += dist * m_stride;
215 m_current -= dist * m_stride;
220 assert(m_stride == other.m_stride);
221 return (m_current - other.m_current) / m_stride;
225 return m_current[idx * m_stride];
229 assert(m_stride == other.m_stride);
230 return m_current == other.m_current;
234 assert(m_stride == other.m_stride);
235 return m_current != other.m_current;
239 assert(m_stride == other.m_stride);
240 return m_current < other.m_current;
244 assert(m_stride == other.m_stride);
245 return m_current <= other.m_current;
249 assert(m_stride == other.m_stride);
250 return m_current > other.m_current;
254 assert(m_stride == other.m_stride);
255 return m_current >= other.m_current;
260 const double* m_current;
291 class iterator_traits<
gsl::const_vector_iterator > {
301 class iterator_traits<
gsl::vector_iterator > {