opCmp with structs

BBaz via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Nov 6 16:22:16 PST 2015


On Friday, 6 November 2015 at 22:55:15 UTC, Alex wrote:
> Ok... the question is not silly any more...
> without 'immutable' it works. So, what am I missing?

sorry, again a forum bug that stripped my answer:

sort() fails because in the template constraint 
`hasAssignableElements` fails.
hasAssignableElements fails because of this you cannot assign 
another value to a ku because the immutable member is already 
defined.
---
template hasAssignableElements(R)
{
     enum bool hasAssignableElements = isInputRange!R && is(typeof(
     (inout int = 0)
     {
         R r = R.init;
         r.front = r.front;
         static if (isBidirectionalRange!R) r.back = r.front;
         static if (isRandomAccessRange!R) r[0] = r.front;
     }));
}
---

more especially this is 'r.front = r.front;' that doesn't pass:

---
import std.range;

struct ku
{
     immutable int id;
}

void main()
{
     ku[] tt;
     tt.front = tt.front;
}
---

so yeah, it cant work if id is immutable.


More information about the Digitalmars-d-learn mailing list