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も定義すれば大丈夫になるからまぁマシか。

個人的には構造体のデストラクタは嬉しいんだけどね。