On Wednesday, 22 June 2016 at 14:17:42 UTC, Jonathan M Davis
wrote:
Well, that particular value should probably work thanks to VRP
(value range propagation), since 10 can fit into float with no
loss of precision. However, what's far more disconcerting is
that
real x = real.max;
float y = x;
compiles. real to float is a narrowing conversion, which should
be an error barring the compiler detecting that the value will
fit in the target type even if it's a narrowing conversion
(which only happens with VRP). That's not the sort of thing
that I would have expected to be broken such that it begs the
question as to whether it's intentional, but given that
narrowing conversions without a cast are illegal everywhere
else, this definitely seems broken.
- Jonathan M Davis
Should I make a bug report? I am not sure it's a bug, seems
intentional. Maybe a dip for a compiler flag to warn on implicit
down conversions, but it would be a pretty small dip.