DIP 1014

Shachar Shemesh shachar at weka.io
Wed Oct 3 17:41:58 UTC 2018


On 03/10/18 12:48, Corel wrote:
> The fact that in D the structures to date are not moved, is known for 
> years ... take advantage of this fact, and move on.

I have no idea where you got this fact:

import std.stdio;

struct MoveTest {
     static uint counter=1;
     uint id;

     @disable this(this);
     @disable this(MoveTest);

     this(uint dummy) {
         id = counter++;
         writefln("Constructed %s id %s", &this, id);
     }

     ~this() {
         writefln("Id %s destroyed at %s", id, &this);
     }
}

MoveTest func1() {
     return MoveTest(3);
}

void func2(MoveTest m) {
}

int main() {
     func2(func1());

     return 0;
}

$ rdmd movetest.d
Constructed 7FFDC7A663E0 id 1
Id 1 destroyed at 7FFDC7A66400

Our instance was constructed at one address, but destroyed at another. 
In other words, it was moved.

Can we, please, put that myth to rest?

Shachar


More information about the Digitalmars-d mailing list