mixin template's alias parameter ... ignored ?
Ali Çehreli
acehreli at yahoo.com
Tue Jul 13 05:26:56 UTC 2021
On 7/12/21 5:42 PM, someone wrote:
> 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 ?
Cumbersome because one has to make sure existing casts are correct after
changing a type.
Harmful because it bypasses the compiler's type checking.
>> 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
The point was, nobody did a downcast in that code. The original
parameter was 'int' so cast(int) was "correct" initially. Then somebody
charnged the parameter to "long" and the cast became potentially harmful.
> 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,
Hm. I am used to strongly-typed languages as well and that's exactly why
I *avoid* casts as much as possible. :)
> 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
We have a different way of looking at this. :) My first preference would be:
ubyte b;
This alternative has less typing than your method and is easier to
change the code because 'ubyte' appears only in one place. (DRY principle.)
auto b = ubyte(0);
Another alternative:
auto b = ubyte.init;
Ali
More information about the Digitalmars-d-learn
mailing list