aboutsummaryrefslogtreecommitdiffstats
path: root/include/chilbert/SmallBitVec.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/chilbert/SmallBitVec.hpp')
-rw-r--r--include/chilbert/SmallBitVec.hpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/include/chilbert/SmallBitVec.hpp b/include/chilbert/SmallBitVec.hpp
index 485ca9e..bd54855 100644
--- a/include/chilbert/SmallBitVec.hpp
+++ b/include/chilbert/SmallBitVec.hpp
@@ -247,44 +247,45 @@ public:
size_t num_racks() const { return 1; }
template<class BitVec>
- class iterator_base : public Mask
+ class iterator_base
{
public:
iterator_base& operator++()
{
- Mask::operator++();
+ ++m_mask;
return *this;
}
iterator_base& operator--()
{
- Mask::operator--();
+ --m_mask;
return *this;
}
bool operator==(const iterator_base& rhs) const
{
- return m_vec == rhs.m_vec && Mask::operator==(rhs);
+ return m_vec == rhs.m_vec && m_mask == rhs.m_mask;
}
bool operator!=(const iterator_base& rhs) const { return !operator==(rhs); }
- bool operator*() const { return m_vec->test(*this); }
+ bool operator*() const { return m_vec->test(m_mask); }
protected:
iterator_base(BitVec& vec, const size_t index)
- : Mask{index}
- , m_vec{&vec}
+ : m_vec{&vec}
+ , m_mask{index}
{}
BitVec* m_vec;
+ Mask m_mask;
};
class iterator : public iterator_base<SmallBitVec>
{
public:
- void set() { m_vec->set(*this); }
- void reset() { m_vec->reset(*this); }
+ void set() { m_vec->set(m_mask); }
+ void reset() { m_vec->reset(m_mask); }
private:
friend class SmallBitVec;