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);