std::list::splice(std::const_iterator pos, std::list&& other) гарантированно оставит other пустым?
std::list::splice(std::const_iterator pos, std::list&& other)
other
Да, это гарантировано для std::list::splice.
std::list::splice
(выделено мной)
1) Переводит все элементы из других в *this. Элементы вставляются перед элементом, на который указывает pos. Контейнер other становится пустым после операции . Поведение не определено, если другое относится к тому же объекту, что и *this.
*this
pos
Из стандарта [list.ops] / 4 :
( выделение мое)
Эффекты: вставляет содержимое x до position и x становится пустым . Указатели и ссылки на перемещенные элементы x теперь ссылаются на те же элементы, но как элементы *this. Итераторы, ссылающиеся на перемещенные элементы, будут продолжать ссылаться на свои элементы, но теперь они ведут себя как итераторы в *this, а не в x.
x
position
Будет ли пункт назначения начинаться как пустой список? Тогда вы можете поменять списки.
В противном случае, если вы не уверены, вы можете переместить список источников в список адресатов и очистить список источников.