so wrote:
Hello Don, finally!
It is hard to explain yourself when you don't know the people you talk
have numeric coding background.
Since we know you have done much numeric and generic coding, it will be
enough for me if you understand what i mean/ask/want,
and say what i am talking is ridiculous, or think that i am trolling,
just say so and i shut up! :)
You're definitely not trolling! I'm not 100% sure of which issue you're
referring too, but I'm aware of a few, for example:
(1) Converting a floating point literal into a double literal is usually
not lossless.
0.5f, 0.5, and 0.5L are all exactly the same number, since they are
exactly representable.
But 0.1 is not the same as 0.1L.
So it's a bit odd that this silent lossless conversion is taking place.
It does have a very strong precedent from C, however.
(2) The interaction between implicit casting and template parameters is
quite poor. Eg, the fact that '0' is an int, not a floating point type,
means that something simple like:
add(T)(T x) if (isFloatingPoint!(T))
doesn't work properly. It is not the same as:
add(real x)
since it won't allow add(0).
Which is pretty annoying. Why can't 0 just mean zero???