В С++ 11 была введена "семантика перемещения", реализованная через два специальных элемента: move constructor и move assign. Обе эти операции оставляют сконструированный перемещенный объект.
Не было бы лучше оставить источник в разрушенном состоянии? Разве не единственное, что вы можете сделать с перемещенным объектом, все равно разрушает его?