26 typename T::value_type;
27 typename T::reference;
28 typename T::value_iterator;
29 typename T::bitmap_iterator;
30 typename T::iterator_tag;
39 template <iterator_types Iterator_types>
41 layout_iterator<Iterator_types>,
42 typename Iterator_types::value_type,
43 typename Iterator_types::iterator_tag,
44 typename Iterator_types::reference>
51 typename Iterator_types::value_type,
52 typename Iterator_types::iterator_tag,
53 typename Iterator_types::reference>;
67 [[nodiscard]]
reference dereference() const;
73 [[nodiscard]]
bool equal(const
self_type& rhs) const;
74 [[nodiscard]]
bool less_than(const
self_type& rhs) const;
88 : m_value_iter(value_iter)
89 , m_bitmap_iter(bitmap_iter)
93 template <iterator_types Iterator_types>
94 auto layout_iterator<Iterator_types>::dereference() const ->
reference
96 return reference(*m_value_iter, *m_bitmap_iter);
99 template <iterator_types Iterator_types>
100 auto layout_iterator<Iterator_types>::dereference() ->
reference
102 return reference(*m_value_iter, *m_bitmap_iter);
105 template <iterator_types Iterator_types>
112 template <iterator_types Iterator_types>
119 template <iterator_types Iterator_types>
126 template <iterator_types Iterator_types>
129 return rhs.m_value_iter - m_value_iter;
132 template <iterator_types Iterator_types>
135 return m_value_iter == rhs.m_value_iter && m_bitmap_iter == rhs.m_bitmap_iter;
138 template <iterator_types Iterator_types>
141 return m_value_iter < rhs.m_value_iter && m_bitmap_iter < rhs.m_bitmap_iter;
typename base_type::difference_type difference_type
layout_iterator< Iterator_types > self_type
Iterator_types::bitmap_iterator bitmap_iterator
typename base_type::reference reference
Iterator_types::value_iterator value_iterator
friend class iterator_access
layout_iterator() noexcept=default
iterator_base< self_type, typename Iterator_types::value_type, typename Iterator_types::iterator_tag, typename Iterator_types::reference > base_type
Concept for iterator types.