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