diff --git a/common/bitsetvector.hh b/common/bitsetvector.hh index 36bb24db151ad73344c487a3009152d9abd06fd5..38e6312c46cf7b77499102adaf1301bbbc19d997 100644 --- a/common/bitsetvector.hh +++ b/common/bitsetvector.hh @@ -42,6 +42,9 @@ namespace Dune { block_number(block_number) {}; + //! hide assignment operator + BitSetVectorConstReference& operator=(const BitSetVectorConstReference & b); + public: typedef std::bitset<block_size> bitset; @@ -252,6 +255,15 @@ namespace Dune { return (*this); } + //! Assignment from BitSetVectorReference + BitSetVectorReference& operator=(const BitSetVectorReference & b) + { + for(int i=0; i<block_size; ++i) + getBit(i) = b.getBit(i); + + return (*this); + } + //! Bitwise and. BitSetVectorReference& operator&=(const BitSetVectorConstReference& x) { @@ -341,6 +353,8 @@ namespace Dune { protected: BitSetVector& blockBitField; + using BitSetVectorConstReference::getBit; + reference getBit(size_type i) { return blockBitField.getBit(this->block_number,i);