Integer precision of function return types

Salih Dincer salihdb at hotmail.com
Sat Sep 28 05:00:52 UTC 2024


On Friday, 27 September 2024 at 20:28:21 UTC, H. S. Teoh wrote:
> ...
> The reason for (2) is that in UFCS chains, the only thing you 
> really only care about is what kind of range it is that you're 
> dealing with, and maybe the element type.  What exactly the 
> container type is, is unimportant, and in fact, stating it 
> explicitly is detrimental to maintenance because the library 
> that gave you that type may change the concrete type in the 
> future while retaining the same range and element type.  So by 
> naming an explicit type for the range, you introduce a 
> potential needless breakage in your code when you next upgrade 
> the library.  Instead, use `auto` to let the compiler figure 
> out what the concrete type is, as long as it conforms to the 
> expected range semantics and has a compatible element type, 
> your code will continue to work as before.
> ...
> 

Once my range didn't work because I used **auto** instead of 
**bool** in the standard InputRange functions (I think it had 
something to do with **length()** too...). As I said, I'm not 
sure, it could also be **size_t length()**. So there are subtle 
cases where we should use auto, I wish I could show you but I 
can't think of any.

SDB at 79


More information about the Digitalmars-d-learn mailing list