The documentation on cppreference says:
1) Default constructor. current is value-initialized. Operations on the resulting iterator have defined behavior if and only if the corresponding operations on a value-initialized Iterator also have defined behavior.
There are some iterators that are meaningful to be default constructed; usually not those that directly associated with containers (that I'm aware of). For example
an istream iterator: http://en.cppreference.com/w/cpp/iterator/istream_iterator/istream_iterator. However, it's not bidirectional so you can't reverse it.
However, in principle, you could have an iterator that is both bidirectional, and whose default constructor/value initializer has at least some operations defined. For such an iterator, you'd want the behavior to be reflected through the reverse_iterator
.