opCmp with structs
    Mike Parker via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Sat Nov  7 06:36:22 PST 2015
    
    
  
On Saturday, 7 November 2015 at 11:48:56 UTC, Alex wrote:
>
> So my general question is: why immutable variables shouldn't be 
> able to be moved (inside an array)?
>
To be pedantic, sort isn't actually moving anything. It's 
reassigning elements, i.e. a[1] = a[2]. The immutable member 
makes it illegal to assign one instance of ku to another:
void main() {
     ku k = ku(1);
     k = ku(2);
}
That's why it's failing. It's actually possible to use move one 
instance into another, though:
void main() {
     import std.algorithm : move;
     ku k1 = ku(1);
     ku k2 = ku(2);
     k2.move(k1);
     assert(k1.id == 2);
}
But sort doesn't work that way. You'll need to take a different 
approach to sort an array of ku.
    
    
More information about the Digitalmars-d-learn
mailing list