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() noexcept;
65 constexpr
void decrement() noexcept;
69 [[nodiscard]] constexpr
bool
71 [[nodiscard]] constexpr
bool
83 template <class B,
bool is_const>
90 template <
class B,
bool is_const>
91 constexpr auto bitset_iterator<B, is_const>::dereference() const noexcept ->
reference
93 if constexpr (is_const)
95 if (p_bitset->data() ==
nullptr)
99 return p_bitset->test(m_index);
103 return bitset_reference<B>(*p_bitset, m_index);
107 template <
class B,
bool is_const>
113 template <
class B,
bool is_const>
119 template <
class B,
bool is_const>
122 if (n < 0 &&
static_cast<size_type>(-n) > m_index)
129 m_index = as_unsigned(as_signed(m_index) + n);
133 template <
class B,
bool is_const>
139 return as_signed(rhs.m_index) - as_signed(m_index);
142 template <
class B,
bool is_const>
147 return m_index == rhs.m_index;
150 template <
class B,
bool is_const>
155 return m_index < rhs.m_index;
158 template <
class B,
bool is_const>
164 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__)
#define SPARROW_CONTRACTS_THROW_ON_FAILURE
typename constify< T, is_const >::type constify_t