c++ - Is erasing element after before_begin() defined in an empty std::forward_list? -
does code have defined behaviour in c++ standard library?
std::forward_list<t> list; list.erase_after(list.before_begin()); intuition no, haven't been able locate exact standards wording particular case.
the precondition on erase_after is:
iterator erase_after(const_iterator position);requires: iterator following
positiondereferenceable.
so example has undefined behaviour, because list empty, list.before_begin() not incrementable, there no iterator following it.
if list has @ least 1 element list.erase_after(list.before_begin()) valid.
Comments
Post a Comment