26 namespace astrotypes {
28 template<
typename DerivedType,
typename SliceType,
bool is_const,
int rank>
36 template<
typename DerivedType,
typename SliceType,
bool is_const,
int rank>
41 template<
typename DerivedType,
typename SliceType,
bool is_const,
int rank>
44 if(!_slice.increment_it(this->_current, _pos)) {
45 this->_current = this->_slice.end()._current;
47 return static_cast<DerivedType&
>(*this);
50 template<
typename DerivedType,
typename SliceType,
bool is_const,
int rank>
56 template<
typename DerivedType,
typename SliceType,
bool is_const,
int rank>
59 return _slice.diff_it(this->_current - f._current);
62 template<
typename DerivedType,
typename SliceType,
bool is_const>
65 DerivedType it(slice);
66 it._current +=
static_cast<std::size_t
>(slice.base_span());
70 template<
typename DerivedType,
typename SliceType,
bool is_const>
72 : _current(slice.base_ptr())
76 template<
typename DerivedType,
typename SliceType,
bool is_const>
81 template<
typename DerivedType,
typename SliceType,
bool is_const>
87 template<
typename DerivedType,
typename SliceType,
bool is_const>
91 return static_cast<DerivedType&
>(*this);
94 template<
typename DerivedType,
typename SliceType,
bool is_const>
97 DerivedType copy(static_cast<DerivedType&>(*
this));
102 template<
typename DerivedType,
typename SliceType,
bool is_const>
108 template<
typename DerivedType,
typename SliceType,
bool is_const>
109 template<
typename DataT>
115 template<
typename DerivedType,
typename SliceType,
bool is_const>
116 template<
typename D,
bool const_val>
119 return _current == o._current;
122 template<
typename DerivedType,
typename SliceType,
bool is_const>
123 template<
typename D,
bool const_val>
126 return _current != o._current;
129 template<
typename T, std::
size_t B,
typename SliceType,
bool is_const>
132 static_assert(B == 1 ,
"not yet implemented");
137 template<
typename T, std::
size_t B,
typename SliceType,
bool is_const>
138 SliceIterator<multiarray::ReducedRankSlice<SliceType, T, B>, is_const>& SliceIterator<multiarray::ReducedRankSlice<SliceType, T, B>, is_const>::operator++(int)
140 static_assert(B == 1 ,
"not yet implemented");
144 template<
template<
typename,
typename...>
class Mixin,
typename... Ts,
typename SliceType,
bool is_const>
151 template<
template<
typename,
typename...>
class Mixin,
typename... Ts,
typename SliceType,
bool is_const>
std::iterator_traits< parent_iterator >::reference reference
difference_type operator-(SelfType const &) const
SliceT const & slice() const
std::conditional< is_const, SliceType const, SliceType >::type SliceT
friend class SliceIteratorBase
std::iterator_traits< parent_iterator >::difference_type difference_type
Overlays an iterator from one data structure onto that of another.
bool operator!=(PointerAllocator< FirstType > const &, PointerAllocator< SecondType > const &) noexcept
Allows to test for diversity of PointerAllocator objects.
bool operator==(PointerAllocator< FirstType > const &, PointerAllocator< SecondType > const &) noexcept
Allows to test for equivalence of PointerAllocator objects.
DerivedType & operator++()
Class to Iterate over a Slice.
std::conditional< is_const, SliceType const, SliceType >::type SliceT