Вот очень простой способ определить назначение перемещения для большинства классов с помощью конструктора перемещения:
class Foo {
public:
Foo(Foo&& foo); // you still have to write this one
Foo& operator=(Foo&& foo) {
if (this != &foo) { // avoid destructing the only copy
this->~Foo(); // call your own destructor
new (this) Foo(std::move(foo)); // call move constructor via placement new
}
return *this;
}
// ...
};
Безопасна ли эта последовательность вызова вашего собственного деструктора с последующим размещением new на указателе this в стандартном C ++ 11?
noexcept
, иначе вы попытаетесь уничтожить уже разрушенный объект, если он бросится и уйдет в UB-land. - person ildjarn   schedule 26.10.2012std::swap
, чтобы поменять значение на свой объект. - person Nicol Bolas   schedule 27.10.2012