New integer promotion rules
ag0aep6g
anonymous at example.com
Wed Jan 17 19:54:50 UTC 2018
On 01/17/2018 08:40 PM, rumbu wrote:
> This started in the last DMD version (2.078):
>
> byte b = -10;
> ulong u = b < 0 ? -b : b;
>
> //Deprecation: integral promotion not done for `-b`, use
> '-transition=intpromote' switch or `-cast(int)(b)
>
> Why do I need a to promote a byte to int to obtain an ulong? Even in the
> extreme case where b is byte.min, -byte.min as unsigned is exactly what
> i need: 128;
Actually, for b = byte.min, you get u = 18446744073709551488.
2.078 is starting to fix this so that you get 128. But that's a breaking
change, so you have to use the compiler switch or the cast for a couple
releases.
In the changelog: https://dlang.org/changelog/2.078.0.html#fix16997
More information about the Digitalmars-d-learn
mailing list