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.