On Thursday, 30 April 2015 at 22:24:15 UTC, bearophile wrote:
Paul:
When compiled on a 64 bit machine, this line
int r = uniform(0, mobs.length);
".length" returns a size_t, and 0 is an int. uniform() probably
decides to unify those types to a size_t. A size_t is 32 bit on
32 bit machines and 64 bits on 64 bit machines. But D "int" is
always a 32 bit signed integer. D allows implicit assignment of
a 32 bit size_t to int but not a 64 bit size_t to an int. I
agree that it's a bit of a mess.
Bye,
bearophile
Thank you for the explanation, it makes perfect sense despite
being a bit of a surprise. (I should have worked this out for
myself but I haven't figured out how to use the documentation
properly yet!).
Paul