Скажем, у меня есть класс, который управляет памятью и, следовательно, требует определенных пользователем специальных функций-членов (представьте vector или аналогичный).
Рассмотрим следующую реализацию оператора move-assign:
Class& operator=(Class&& rhs)
{
    this->~Class();                    // call destructor
    new (this) Class(std::move(rhs));  // call move constructor in-place
}
-  Является ли действительным реализовать оператор переадресации таким образом? То есть, вызывает ли вызов деструктора и конструктора таким образом не запускать какие-либо правила жизни объекта на языке? 
-  Это хорошая идея, чтобы реализовать оператор переадресации таким образом? Если нет, то почему нет, и есть ли лучший канонический способ? 
