>>969
placement newを使う方法ならどのコンパイラでも使える。
#include <new>
T& T::operator =(const T& y)
{
  if (this != &y)
  {
    this->~T();
    new(this) T(y);
  }
  return *this;
}
しかし、コンストラクタの中で例外が起こると非常にまずい
(thisがデストラクタされて状態不定のまま)などの理由で勧められない。

代入演算子をコピーコンストラクタで実装したいという目的に限れば、
Exceptional C++でも紹介されているswapを使う方法がいい。
//その1
T& T::operator =(const T& y)
{
  T t(y);
  swap(t); //Tのメンバ関数として作っておく
  return *this;
}
//その2
T& T::operator =(T y)
{
  swap(y);
  return *this;
}