On Thursday, 20 December 2018 at 15:17:31 UTC, Steven Schveighoffer wrote:
It's really how opEquals is marked.

opEquals for structs (without a specific implementation), is marked as a combination of comparing all the fields, whatever they are marked. Any basic types are comparable whether they are const or not. So most likely the range struct's opEquals is marked const.

However, popFront is likely not const. In some rare cases it can be (i.e. an infinite range of a single value). If the range cannot be operated, isInputRange returns false.

-Steve

I know about promotion / implicit casting, but I always find this is a but awkward when comparing objects or structs it's equal but acts differently.

But I'm may be the minority. :)

Marko.


Reply via email to