New integer promotion rules

rumbu rumbu at rumbu.ro
Thu Jan 18 18:00:51 UTC 2018


On Thursday, 18 January 2018 at 17:54:59 UTC, rumbu wrote:
> On Thursday, 18 January 2018 at 12:51:48 UTC, Dominikus Dittes

>>
>> target = isNegative ? cast(Unsigned!T)(-c) : cast(Unsigned!T)c;
>>
>> That would have been better even before the change, because 
>> the operator '-' used on unsigned types is likely to produce 
>> unexpected results, if the behaviour is defined at all.
>
> I don't think so:
>
> ulong c = 128;
> bool isNegative = true;
> byte target = isNegative ? -cast(ubyte)c : cast(ubyte)c;
>
> Error Deprecation: integral promotion not done for 
> `-cast(ubyte)c`, use '-transition=intpromote' switch or 
> `-cast(int)(cast(ubyte)c)`		

My bad, it works. Thanks:

ulong c = 128;
bool isNegative = true;
byte target = isNegative ? cast(ubyte)-c : cast(ubyte)c;


More information about the Digitalmars-d-learn mailing list