在cpp中以布尔运算符[]返回布尔值

所以基本上我有一个std :: vector容器,它包含bool值(真,假),并且我需要一个operator [],但是当我返回带有正确索引的value(bool)时,它给了我一个错误这个: 不能将类型'bool&'的非常量左值引用绑定到类型'bool'|的右值

我的接线员看起来像这样:

> bool& operator[] ( unsigned int idx) { 
    typename std::vector<bool>::iterator retval; 
    for (typename std::vector<std::vector<bool>*>::iterator it = data.begin(); it != data.end(); ++it) {      
     for (typename std::vector<bool>::iterator cont_it =  (*it)->begin(); cont_it != (*it)->end();++cont_it) 
{       if (idx == 0) {
>       retval = cont_it; 
             }      
       idx--; 
      }     
      }
> return *retval;   }

并调用导致错误的原因:

  ivb[ 0 ] = false;
  ivb[ 1 ]  = true;