// GOOD
T& T::operator=( const T& other ) {
T temp( other );
Swap( temp );
return *this;
}
// BAD
T& T::operator=( const T& other ) {
if (this != &other) {
this->~T(); // evil
new (this) T( other ); // evil
}
return *this;
}