Suppose I have an iterator std::list::iterator it = mylist.begin() of a container, and I call 
iterator it2 = std::next(it,1);
Does std::next check if it == mylist.end()?
Suppose I have an iterator std::list::iterator it = mylist.begin() of a container, and I call 
iterator it2 = std::next(it,1);
Does std::next check if it == mylist.end()?
No, the program was blocking in that situation. You should check yourself:
if (it != mylist.end())
    it2 = std::next(it,1);