There are no technical reasons preventing the return of a reference to an input value, and any reasonable compiler should be able to optimize the return value if it is not used. That way, they could do it that way if they wanted to.
, API, - std::prev std::next , , , .
std::advance, , . , , . .
, std::advance InputIterator s, , (, , ), std::prev std::next ForwardIterator s, .
, (, std::prev std::next) - , .