As pointed out by @dblaikie, the BitVector iterator introduced in r303227 could use iterator_facade_base to provide some default behaviors for iterators, like It++ and !=.
For that, we need to update the constraints on iterator_facade_base to support iterators with an operator-> returning a value, and not a const T&.
Actually, I see your leading comment and this change now.
I'm not sure if this change is valid/necessary. I /think/ op* is meant to return something convertible to the reference type of the iterator, even for a forward iterator. (& you should be able to take its address and use that so long as you don't modify the iterator).
ie: I /think/ this should be valid for all forward iterators:
but for the bit iterator you've added, that would be invalid - reference to temporary, etc.
I /think/ you have to return a (const, in this case) unsigned& from the op* and you should be fine & not need these changes)