https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116976
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Adding something like this to _Bit_iterator (and _Bit_const_iterator) allows
calling flip():
struct _Pointer
{
reference _M_ref;
const _Pointer* operator->() const { return this; }
void flip() const { *_M_ref._M_p ^= _M_ref._M_mask; }
};
_Pointer operator->() const { return _Pointer{{_M_p, 1UL << _M_offset}}; }
It wouldn't support vb.begin()->operator bool()
nor vb.begin()->vector<bool>::reference::flip()
But I'm OK with that.