Charles Hixson wrote:
Unfortunately, what it tried to do was cast it to either byte or long
rather than the base case (which was int). Fortunately it couldn't
decide which to cast it as, as either choice would have been an error.
(I'm writing to a binary file, and the size of the item written is
significant.)
The following works for me (using LDC):
typedef int mint;
void foo (long i) {}
void main ()
{
mint a = 1;
foo (a);
}
However, this also works:
typedef int mint;
void foo (byte i) {}
void main ()
{
mint a = 1;
foo (a);
}
It's an implicit narrowing conversion -- that involves data loss. This
is a bug.