[phobos] std.array.ilength

Andrei Alexandrescu andrei at erdani.com
Thu Feb 17 06:14:34 PST 2011


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
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos


More information about the phobos mailing list