Pop Quiz what is wrong with this code?
Steven Schveighoffer
schveiguy at gmail.com
Mon Jun 22 12:42:26 UTC 2020
On 6/20/20 11:22 PM, Danni Coy wrote:
> On Sun, Jun 21, 2020 at 9:40 AM Avrina via Digitalmars-d
> <digitalmars-d at puremagic.com> wrote:
>>
>> On Saturday, 20 June 2020 at 18:15:27 UTC, Steven Schveighoffer
>> wrote:
>>> On 6/20/20 12:00 PM, Danni Coy wrote:
>>>
>>>> I tried explicitly making x and y ints and I got a
>>>> depreciation warning.
>>>
>>> foreach(ptrdiff_t y, ref row; offsetMap)
>>>
>>> is that what you wanted?
>>>
>>> ptrdiff_t is the signed version of size_t. The complaint is not
>>> that you are converting from unsigned to signed, but that you
>>> are converting from 64-bit to 32-bit.
>> Why isn't that deprecated as well? implicitly converting from
>> ulong to long is an error as much as ulong to uint.
>
> It turns out this line is the bigger problem.
>
> immutable SDL_FPair offset = { center.x - x, y - center.y };
> FPair is a
> struct SDL_FPair
> {
> float x;
> float y;
> ...
> if those values were ints.
> dmd will not allow a downcast from ulong to int
> (the compiler would have caught the issue for me)
> but it will allow casting ulong to float which is why It took me a
> couple of hours with a debugger
> trying to find the bug.
So this entire conversation is incorrect -- there is no promotion to
unsigned happening.
What is the bug with size_t implicitly casting to float? I would think
it would work.
-Steve
More information about the Digitalmars-d
mailing list