opCmp with structs
    Ali Çehreli via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Fri Nov  6 16:19:55 PST 2015
    
    
  
On 11/06/2015 02:54 PM, Alex wrote:
 > I'm sure I'm doing a silly mistake somewhere, but why this doesn't work?
 > import std.stdio;
 > import std.algorithm;
 >
 > struct ku
 > {
 >      immutable int id;
 >      alias id this;
 >
 >      this(int i)
 >      {
 >          id = i;
 >      }
 >
 >      int opCmp(ref const ku rhs) const {return id - rhs.id; }
 > }
 >
 > void main()
 > {
 >      ku[] tt = [ku(2), ku(1)];
 >      sort(tt);
 > }
Continuing from your hint: So, opCmp works but it is sort() that cannot 
move objects of ku around because of that immutable variable.
There may be references to ku objects or its id members and those 
references may be depending on the immutability of that member. const 
and immutable members effectively make objects unassignable. (const part 
is the same in C++.)
Ali
    
    
More information about the Digitalmars-d-learn
mailing list