[phobos] std.array.ilength
David Simcha
dsimcha at gmail.com
Thu Feb 17 05:59:31 PST 2011
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
More information about the phobos
mailing list