https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115514
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- The constraint on reverse_iterator::operator->() checks it for an lvalue, which suggests nobody considered (or cared) about annoying iterators that do something different for lvalues and rvalues. I'm inclined to consider the difference here to be an unintended consequence of using of std::prev, and so a defect in the spec. I think this is not something we should care about.