What's the difference between std::advance and std::next?

c++, c++11, std

Solution

`std::advance`

- modifies its argument

- returns nothing

- works on input iterators or better (or bi-directional iterators if a negative distance is given)

`std::next`

- leaves its argument unmodified

- returns a copy of the argument, advanced by the specified amount

- works on forward iterators or better (or bi-directional iterators if a negative distance is given))

Problem

Is there more beyond advance takes negative numbers?

Original source