struct T {
T() {}
T(const T&) {}
~T() {}
private:
const T& operator=(const T&);//禁止したい
};
--------------
T t1, t2;

t1.~T()
new (&t1) T(t2);

これって実行時間をのぞけば
t1 = t2
を実行できたのと同じことだよね?
(operator=がごく普通にコピーをあらわすとして。)