С точки зрения правильного C++, при проектировании класса нужно относиться к move семантике как к деструктору, в том смысле что старый объект разрушается, правильно ли? Например такая ситуация: класс реализует долгую операцию, и содержит поля используемые в этой операции. Как быть если кто-то захочет сделать move из другого потока? Можно сделать некий lock/unlock и отслеживать перед move, но как сделать поддержку move «правильно»? Запретить move семантику для класса? Кидать исключение? Понимаю что я не совсем понимаю move :)