std::next (3) - Linux Man Pages
Defined in header <iterator>
template< class ForwardIt >
ForwardIt next( (since C++11)
ForwardIt it, (until C++17)
typename std::iterator_traits<ForwardIt>::difference_type n = 1 );
template< class InputIt >
constexpr InputIt next( (since C++17)
typename std::iterator_traits<InputIt>::difference_type n = 1 );
Return the nth successor of iterator it.
ForwardIt must meet the requirements of LegacyForwardIterator.
InputIt must meet the requirements of LegacyInputIterator.
The nth successor of iterator it.
However, if InputIt or ForwardIt additionally meets the requirements of LegacyRandomAccessIterator, complexity is constant.
Although the expression ++c.begin() often compiles, it is not guaranteed to do so: c.begin() is an rvalue expression, and there is no LegacyBidirectionalIterator requirement that specifies that increment of an rvalue is guaranteed to work. In particular, when iterators are implemented as pointers, ++c.begin() does not compile, while std::next(c.begin()) does.
// Run this code