Integer conversions too pedantic in 64-bit
Steven Schveighoffer
schveiguy at yahoo.com
Thu Feb 17 10:26:01 PST 2011
On Thu, 17 Feb 2011 13:08:08 -0500, bearophile <bearophileHUGS at lycos.com>
wrote:
> Steven Schveighoffer:
>
>> Yes, David has proposed a corrected version on the Phobos mailing list:
>>
>> http://lists.puremagic.com/pipermail/phobos/2011-February/004493.html
>
> I suggest it to return a signed value, like an int. But a signed long is
> OK too.
> I suggest a name as "len" (or "slen") because I often write "length"
> wrongly.
This isn't replacing length, it is in addition to length (which will
continue to return size_t).
>
> Does it support code like:
> auto l = arr.len;
> arr.len = 10;
> arr.len++;
arr.length = 10 already works. It's int l = arr.length that doesn't.
if arr.length++ doesn't work already, it should be made to work (separate
bug).
> A big problem: it's limited to arrays, so aa.len or rbtree.len, set.len,
> etc, don't work. So I'd like something more standard... So I am not sure
> this is a good idea.
The point is to avoid code like cast(int)arr.length everywhere you can
safely assume arr.length can fit in a (u)int.
This case is extremely common for arrays, you seldom have an array of more
than 2 or 4 billion elements.
For other types, the case might not be as common, plus you can add
properties to other types, something you cannot do to arrays.
As far as I'm concerned, this isn't going to affect me at all, I like to
use size_t. But I don't see the harm in adding it.
-Steve
More information about the Digitalmars-d
mailing list