string <-> null/bool implicit conversion

via Digitalmars-d digitalmars-d at puremagic.com
Fri Aug 21 04:50:58 PDT 2015


On Friday, 21 August 2015 at 11:43:11 UTC, Steven Schveighoffer 
wrote:
> On 8/21/15 7:34 AM, "Marc =?UTF-8?B?U2Now7x0eiI=?= 
> <schuetzm at gmx.net>" wrote:
>> I disagree. `is null` is the one that should be illegal. `is` 
>> is
>> supposed to do a bitwise comparison, but `null` is usually 
>> just a
>> pointer/reference, while a slice consists of both a reference 
>> and a
>> length. Which of those are compared?
>
> Both. null in this context is actually an array (with null 
> pointer and zero length).
>
> null is technically a no-type placeholder (defaulting to void * 
> without context). In different contexts it means different 
> things.
>
> arr is null -> both pointer and length are 0
> arr == null -> arr contains the same elements that null 
> contains.
> arr.ptr == null -> arr contains a null pointer (length could 
> technically be non-zero).

Thank for clarifying, I suspected that. Still not a good idea to 
use, IMO.


More information about the Digitalmars-d mailing list