Why in Phobos is empty() sometimes const and sometimes not

Eduard Staniloiu edi33416 at gmail.com
Mon Jul 29 17:58:10 UTC 2019


On Monday, 29 July 2019 at 17:32:58 UTC, Matt wrote:
> I've noticed that for some ranges in Phobos empty is marked 
> const (e.g. iota) but for other ranges (e.g. multiwayMerge) it 
> is not const. Is there a reason why? Isn't empty guaranteed not 
> to alter the data of the range and so should be const?
>
> This is causing me considerable headaches as I try to write my 
> own ranges that accept other ranges and have it all work for 
> the general case. Any advice would be welcome.

You could use introspection (a static i) to check if the type 
defines a const/non-const version and write the appropriate empty 
declaration.

As for why it’s like this I’ll have to look at the code in 
Phobos, but I’m currently away from my pc (on the phone).

Cheers,
Edi


More information about the Digitalmars-d-learn mailing list