Weird const behavior

Marko marko at gmail.com
Thu Dec 20 17:10:56 UTC 2018


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.




More information about the Digitalmars-d-learn mailing list