I dun a DIP, possibly the best DIP ever

Stefan Koch uplink.coder at googlemail.com
Fri Apr 24 08:53:54 UTC 2020


On Friday, 24 April 2020 at 08:52:41 UTC, Stefan Koch wrote:
> On Friday, 24 April 2020 at 08:35:53 UTC, Walter Bright wrote:
>> On 4/24/2020 1:24 AM, Walter Bright wrote:
>>
>> Please keep in mind that the following works today:
>>
>>   void foo(int);
>>
>>   template tuple(T...) { enum tuple = T; }
>>
>>   void test() {
>>     auto t = tuple!(1, 2, 3);
>>     static foreach (i, e; t)
>>         foo(e + i);
>>   }
>>
>> and generates:
>>
>>   void test() {
>>      foo(1); foo(3); foo(5);
>>   }
>
> not on 64bit.
> on 64bit it's cannot pass argument cast(ulong)__t_field_0 + 0LU 
> of type ulong to parameter int.
> on 32 bit it genrates
>     (int, int, int) t = tuple(1, 2, 3);
>     foo(cast(ulong)__t_field_0 + 0LU);
>     foo(cast(ulong)__t_field_1 + 1LU);
>     foo(cast(ulong)__t_field_2 + 2LU);

Edit cast(ulong) -> cast(uint)


More information about the Digitalmars-d mailing list