this(this)と~thisは死ねば良いと思うよ
D言語の新バージョンで遊んでみた。
struct S{} struct T{~this(){}} struct U{this(this){}} struct V{V opAssign(V x){return*this;} ~this(){}} void main(){ S a;a=a=a;//OK T b;b=b=b;//NG U c;c=c=c;//NG V d;d=d=d;//OK }
~this()かthis(this)が定義すると、
なんと勝手にopAssignも定義しやがるんですが、そいつの帰り値の型がポインタです。
だから、b=bの式の型はT*になるとか、わけがわからん。
ただ、自分でopAssignも定義すれば大丈夫になるからまぁマシか。
個人的には構造体のデストラクタは嬉しいんだけどね。