mixin template's alias parameter ... ignored ?

someone someone at somewhere.com
Tue Jul 13 00:42:27 UTC 2021


On Monday, 12 July 2021 at 23:25:13 UTC, Ali Çehreli wrote:
> On 7/12/21 3:35 PM, someone wrote:
>
> >>> private size_t pintSequenceCurrent = cast(size_t) 0;
> >
> >> Style: There's no need for the casts (throughout).
> >
> > [...] besides, it won't hurt, and it helps me in many ways.
>
> I think you are doing it only for literal values but in 
> general, casts can be very cumbersome and harmful.

Cumbersome and harmful ... could you explain ?

> For example, if we change the parameter from 'int' to 'long', 
> the cast in the function body is a bug to be chased and fixed:
>
> // Used to be 'int arg'
> void foo(long arg) {
>   // ...
>   auto a = cast(int)arg;  // BUG?
>   // ...
> }

nope, I'll never do such a downcast UNLESS I previously tested 
with if () {} for proper int range; I use cast a lot, but this is 
mainly because I am used to strongly-typed languages etc etc, for 
example if for whatever reason I have to:

ushort a = 250;
ubyte b = cast(ubyte) a;

I'll do:

ushort a = 250;
ubyte b = cast(ubyte) 0; /// redundant of course; but we don't 
have nulls in D for ints so this is muscle-memory
if (a <= 255) { /// or ubyte.max instead of 255 (I think it is 
possible)
    b = cast(ubyte) a;
}

> void main() {
>   foo(long.max);
> }
>
> Ali




More information about the Digitalmars-d-learn mailing list