36 template <
class B,
bool is_const>
38 bitset_iterator<B, is_const>,
39 mpl::constify_t<typename B::value_type, is_const>,
40 std::random_access_iterator_tag,
41 std::conditional_t<is_const, bool, bitset_reference<B>>>
49 std::contiguous_iterator_tag,
50 std::conditional_t<is_const, bool, bitset_reference<B>>>;
63 constexpr
reference dereference() const noexcept;
64 constexpr
void increment();
65 constexpr
void decrement();
68 [[nodiscard]] constexpr
bool equal(const
self_type& rhs) const noexcept;
69 [[nodiscard]] constexpr
bool less_than(const
self_type& rhs) const noexcept;
80 template <class B,
bool is_const>
87 template <
class B,
bool is_const>
88 constexpr auto bitset_iterator<B, is_const>::dereference() const noexcept ->
reference
90 if constexpr (is_const)
92 if (p_bitset->data() ==
nullptr)
96 return p_bitset->test(m_index);
100 return bitset_reference<B>(*p_bitset, m_index);
104 template <
class B,
bool is_const>
110 template <
class B,
bool is_const>
116 template <
class B,
bool is_const>
119 if (n < 0 &&
static_cast<size_type>(-n) > m_index)
126 m_index = as_unsigned(as_signed(m_index) + n);
130 template <
class B,
bool is_const>
135 return as_signed(rhs.m_index) - as_signed(m_index);
138 template <
class B,
bool is_const>
142 return m_index == rhs.m_index;
145 template <
class B,
bool is_const>
149 return m_index < rhs.m_index;
152 template <
class B,
bool is_const>
158 template <
class B,
bool is_const>
typename base_type::reference reference
constexpr bitset_iterator() noexcept=default
mpl::constify_t< B, is_const > bitset_type
iterator_base< self_type, mpl::constify_t< typename B::value_type, is_const >, std::contiguous_iterator_tag, std::conditional_t< is_const, bool, bitset_reference< B > > > base_type
mpl::constify_t< typename B::block_type, is_const > block_type
typename B::size_type size_type
bitset_iterator< B, is_const > self_type
friend class iterator_access
typename base_type::difference_type difference_type
Reference proxy used by the bitset_iterator class to make it possible to assign a bit of a bitset as ...
#define SPARROW_ASSERT_TRUE(expr__)
typename constify< T, is_const >::type constify_t