On Sun, 21 Dec 2014 15:20:44 +0000 Jonathan Marler via Digitalmars-d <digitalmars-d@puremagic.com> wrote:
> It seems alot of the potential bugs from casting can occur when > one of the types change. If we forced the cast operator to match > the type(s) exactly then it would eliminate all these bugs. that is what i mean by "don't use hacks"! what many people think about when there is need to convert from one type to another? CAST IT! not "convert it", but "cast it". but we have idiomatic "to!" for type conversion. still puzzled a little? ;-) i'm about "hide that cast in system module in faraway land" again. int z; short a; z.castassignto!(short)(a); // OK z.castassignto!(byte)(a); // FAIL this is ugly? yes, exactly as it should be. this is working? yes. we can use it to enforce both types too: castassignto!(int, short)(z, a); will this work? oops, nope... as we have no control on argument type deduction for templates, one can write: z.castassignto!(a); ahem... is this `cast(auto)`? ;-) ok, to make a long story short: the idea is to replace explicit casts by templated casts. templates gives us more control, can have more arguments and if we'll do a ER that allows us to control argument type deduction will give us way to control what must be specified and what can be omited.
signature.asc
Description: PGP signature