One of the principles on which the iterator’s conceptual idea is based is as follows: as long as the iterator remains smooth, dereferenced and unmodified, it must refer to the same object. In other words, dereferencing the same iterator several times should give the same value. Algorithms using iterators can rely on this.
What you propose will lead to an iterator that will “magically” change the value it refers to, although the iterator itself remains unchanged. This is unacceptable in the conceptual idea of an iterator.
, , , , (, std::random_shuffle). , , . , erase? .