opCmp with structs
BBaz via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Nov 7 02:24:01 PST 2015
On Saturday, 7 November 2015 at 10:15:25 UTC, Alex wrote:
> So the question remains, how to sort? Do you think removing the
> immutable property from an id is the semantically right way? Or
> do you have a hint, maybe something like, a dup copy with
> removing immutability and returning a new, sorted copy? If you
> think the latter is the way to choose, how is the syntax there?
> ;)
This fails because in sort() a struct is considered as a value,
so the instance are not moved, it looks like this() is called
using the instance of another slot.
So to get rid of that use some pointer to struct, here when
sort() will have to move it'll move the reference:
---
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 = [new ku(2),new ku(1)];
sort(tt);
}
---
More information about the Digitalmars-d-learn
mailing list