[ ] Операция swap у вас будет использовать move конструктор, который вы не сможете сделать noexcept, если внутри него будет выделяться память. Лучше сделайте noexcept метод swap внутри класса списка.
[ ] Если оператор new выбросит исключение оператор упадёт. Если хотите сделать перемещающий оператор присваивания noexcept, оставляйте сторожевые ноды на месте и перекидывайте указатели
[ ] Реверсированный итератор должен быть отдельным типом, а не состоянием (иначе присваивание превратит реверсированный итератор в нереверсированный, а сравнивать реверсированный итератор с нереверсированным, по идее, должны быть тоже нельзя. Проще всего сделать один обычный итератор обернуть его в std::reverse_iterator
[ ] у const списка должны возвращаться итераторы, позволяющие только читать данные. У вас же возвращается просто константный итератор, который можно скопировать в обычный итератор и выполнять любые действия над данными
https://github.com/voronindim/OOP/blob/d9857309726bf5964372cf2332494810e7951559/lab_6/StringList/StringList.cpp#L3-L9