On Friday, 19 December 2014 at 15:17:04 UTC, Steven Schveighoffer
wrote:
On 12/18/14 6:18 PM, Adam D. Ruppe wrote:
On Thursday, 18 December 2014 at 23:06:12 UTC, ketmar via
Digitalmars-d
wrote:
the only thing this will help is to hide bugs, i believe.
On the contrary, I find explicit casts hide bugs. Suppose you
write:
size_t a = cast(int) b;
It will compile and run. It'll mostly work. But the cast to
int probably
wasn't intended (it was probably written in 32 bit code and not
correctly ported to 64 bit).
How often do we also write auto a = cast(T) b;? The difference
would be
the type is written on the left side instead of the right.
Might make an
important differnce when calling functions.
I think the auto cast is a win all around.
I have to agree with ketmar. Cast needs fixing, but this is not
it. We need more control over what is cast, not less control.
Your example unwittingly shows the issue :) casts are blunt
instruments that force the compiler to abandon it's checks. I'm
not as concerned about a changing it's type as I am about b.
Change the type of b, and the compiler still happily generates
possibly disastrous code.
At this point, we can only say "abandon ALL checks." We can't
finely tune this.
I'd like to have a cast where you must define both "from" and
"to" types precisely.