The unsafe situations are extreme cases (arrays of more than 2 or 4 billion elements), so the risk is equally extremely low.
As David said also, the non-release version uses an assert to protect against unsafe usage. Consider this as unsafe as array indexing, which is verified at runtime in non-release mode, and assumed correct in released mode. And what's wrong with to!int is that it could error even in release mode, where you don't want extra runtime checks. -Steve ----- Original Message ----- > From:Andrei Alexandrescu <[email protected]> > To:Discuss the phobos library for D <[email protected]> > Cc: > Sent:Thursday, February 17, 2011 9:14 AM > Subject:Re: [phobos] std.array.ilength > > I'm not sure I see the improvement over a cast. If anything it makes > everything more comfy and therefore riskier. > > What's wrong with to!int(arr.length)? It's safe too. > > > Andrei > > On 2/17/11 7:59 AM, David Simcha wrote: > > Hey guys, > > > > Kagamin just came up with a simple but great idea to mitigate the > > pedantic nature of 64-bit to 32-bit integer conversions in cases where > > using size_t doesn't cut it. Examples are storing arrays of indices > into > > other arrays, where using size_t would be a colossal waste of space if > > it's safe to assume none of the arrays will be billions of elements > long. > > > > int ilength(T)(T[] arr) { > > assert(arr.length <= int.max); > > return cast(int) arr.length; > > } > > > > Usage: > > > > int[] indices; > > auto array = returnsArray(); > > indices ~= array.ilength; > > > > This cuts down on the excessive verbosity of an explicit cast that's > > safe 99.999 % of the time and encourages sprinkling it into code even if > > for the foreseeable future it will be compiled in 32-bit mode. > > > > Two questions: > > > > 1. Is everyone ok with me adding this as a convenience function to > > std.array? > > 2. int or uint? I used int only b/c that was the example on the > > newsgroup, but I think uint makes more sense. > > > > --David Simcha > > _______________________________________________ > > phobos mailing list > > [email protected] > > http://lists.puremagic.com/mailman/listinfo/phobos > _______________________________________________ > phobos mailing list > [email protected] > http://lists.puremagic.com/mailman/listinfo/phobos _______________________________________________ phobos mailing list [email protected] http://lists.puremagic.com/mailman/listinfo/phobos
