Inferred Type for Explicit Cast

Dicebot via Digitalmars-d digitalmars-d at puremagic.com
Sat Dec 20 02:20:01 PST 2014


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.


More information about the Digitalmars-d mailing list