[ ] Конструктор перемещения не может обеспечить гарантию noexcept, так как реализован с использованием default-конструктора, бросающего исключения. Просто смиритесь с фактом, что при наличии сторожевых узлов вам, скорее всего, придётся использовать аллокации при конструировании объекта/
Рекомендую почитать статью одного из разработчиков STL (для MS Visual c++) на эту тему
https://isocpp.org/files/papers/N4055.html
[ ] В этой реализации у вас тоже не выйдет обеспечить noexcept для оператора перемещения, если вы используете внутри него default конструктор, выполняющий аллокации. Но оператор перемещения можно сделать noexcept, если вы оставите текущие сторожевые ноды у приёмника и источника на месте, но перекинете остальные узлы.
[ ] Тут рекомендую добавить в класс списка noexcept метод swap, выполняющий эффективный обмен данных двух списков. Тогда и std::swap вы сможете сделать noexcept (сейчас у вас не выйдет это сделать, так как default конструктор у вас может бросать исключения, но если реализация std::swap будет использовать метод swap, не создающий промежуточных объектов, а меняющий данные напрямую).
https://github.com/AnyaGl/oop/blob/33879160095cd87334917802b46ca18c41a19c1d/labs/lab7/MyList/MyList/MyList.h#L146-L156