Вопрос действительно философский. По мне, как минимум после перемещения должны работать еще две операции: swap (если есть) и присваивание (operator=).
В процессе опыта реализации перемещения разных объектов, решил что оставлять объект в валидном состоянии, в общем случае, может быть дороговато (зависит от объекта конечно), да и начинают вылезать нежелательные практики от которых, вроде как, хотелось уйти. Постараюсь объяснить что я имею ввиду:
Если строго соблюдать RAII, то в классах многих объектов отсутствуют конструкторы по умолчанию. В С++ это удобно делать если объект в "дефолтном" состоянии не имеет смысла и не может делать ничего полезного. Также такой объект не может быть в не инициализированном состоянии и не нужны внутренние проверки на валидность состояния при вызове публичных методов (максимум ассерты). Все хорошо и концепция жива пока мы не сделаем перемещение объекта. Если после перемещения продолжать работу с таким объектом, то тут же "вылезает" новое "дефолтое" состояние, такое же как в случае двойной инициализацией все преимущества RAII идут лесом.