struct SPoint{ double x,y; SPoint create(double x,double y){ SPoint p; p.x=x; p.y=y; return p; } } .. SPoint[] sps; sps~=SPoint.create(2,4);//OK. sps=sps~SPoint.create(2,4);//Internal error: ..\ztc\type.c 308, dmd v0.161 int[] a; a~=2;//OK. a=a~2;//OK. Is this a bug or I'd made some mistakes.