Copying with immutable arrays

Tobias Pankrath tobias at pankrath.net
Sun Oct 28 02:37:19 PDT 2012


Thank you for your detailed answer!

What I don't understand is the reason why you need the .dup in 
the first place.

Take a look at these two structs that now contain an int* and an 
int instead of string[].

struct SA {
     int i;
}

struct SB {
     int* i;
}

If you try to .dup an array of SA it will work and if you .dup an 
array of SB it will fail. I understand why it works this way, 
because in case of SB you would get an mutable reference of type 
int* out of immutable(int*), which would brake the type system. 
However the struct SwA from above does neither correspond to SA 
nor to SB, it's imo more like SC:

struct SC {
     immutable(int)* i;
}

Now a copy would do no harm, everything that was immutable in the 
source and is still accessable from the copy is immutable, too. 
Any reason (despite of implemenational issues) that this is not 
how it works?




More information about the Digitalmars-d-learn mailing list