I find myself using [abusing?] move lately:

import std.algorithm;
import std.stdio;

struct A {
    const(int) i;
    int j;
    int k;
}

void main() {
    A* a = new A(); // pretend this is malloc or something
    // *a = A(1)
    A a2 = A(1);
    move(a2, *a);

    A[] arr = new A[](2);
    //arr[1] = *a;
    move(*a, arr[1]);
}

For the first part, I have a A* pointing to uninitialized memory and I need to initialize it somehow. move works I guess because it uses memcpy or something. Not complaining, but wondering.

The second part violates D's const semantics and maybe shouldn't be permitted. But it is.

Reply via email to