Я недавно столкнулся с другим отличием. Метод splice_after
имеет другой интерфейс и другое поведение.
1) forward_list Требуется, чтобы вы передавали контейнер, из которого вы перемещаетесь, в качестве второго аргумента:
void splice_after( const_iterator pos, forward_list& other,
const_iterator first, const_iterator last );
SLIST:
void splice_after(iterator pos, iterator before_first, iterator before_last)
Это похоже на перегрузки.
2) Специально для упомянутой выше перегрузки: последний итератор интерпретируется по-разному! Где slist перемещает диапазон [before_first + 1, before_last + 1>, forward_list перемещает диапазон . Итак, при преобразовании кода (так как slist устарел в GCC, например), обязательно используйте: last = before_last + 1.