On Tue, 2020-04-21 at 15:48 -0400, Steven Schveighoffer via Digitalmars-d-learn wrote: […] > > 1. it's shorter and prettier. > 2. No cast (I avoid using cast whenever I can). > 3. No gotcha type conversions.
Works for me, you have me convinced. :-) > e.g. for point 3: > > enum ZoneMember { // : int > One = 1, > Two = 2, > ReallyBig = 4567, > } > > auto b1 = ubyte(ZoneNumber.One); // 1 (compiler uses VRP to make this > work) > auto b2 = ubyte(ZoneNumber.ReallyBig); // Compiler error > > vs. > > auto b1 = cast(ubyte)ZoneNumber.One; // 1 > auto b2 = cast(ubyte)ZoneNumber.ReallyBig; // b2 == 215 (truncated) > > vs. > > auto b1 = to!ubyte(ZoneNumber.One); // 1 > auto b2 = to!ubyte(ZoneNumber.ReallyBig); // runtime error QED. Though for converting a ulong to a ubyte, I am assuming to!ubyte(x) is the right tool for the job. […] > pragma(msg, typeof(ZoneNumber.One).stringof); // ZoneNumber Which is as it should be really. I was clearly having a mental aberration. Anyway, the probem is now solved! :-) Thanks for your input, much appreciated. -- Russel. =========================================== Dr Russel Winder t: +44 20 7585 2200 41 Buckmaster Road m: +44 7770 465 077 London SW11 1EN, UK w: www.russel.org.uk
signature.asc
Description: This is a digitally signed message part