Null references redux
    Walter Bright 
    newshound1 at digitalmars.com
       
    Sat Sep 26 18:32:10 PDT 2009
    
    
  
Andrei Alexandrescu wrote:
> Walter Bright wrote:
>> The problem with non-nullable references is what do they default to? 
>> Some "nan" object? When you use a "nan" object, what should it do? 
>> Throw an exception?
> 
> This is the mistake. There would no way to default initialize a non-null 
> object. I'm surprised you are still saying this, because we discussed 
> how NonNull!T could be implemented by disabling its default constructor.
Sure, so the user just provides "0" as the argument to the non-default 
constructor. Or he writes:
     C c = c_empty;
using c_empty as his placeholder for an empty object. Now, what happens 
with:
     c.foo();
? Should c_empty throw an exception? To take this a little farther, 
suppose I wish to create an array of C that I will partially fill with 
valid data, and leave some empty slots. Those empty slots I stuff with 
c_empty, to avoid having nulls. What is c_empty's proper behavior if I 
mistakenly try to access its members?
Forcing the user to provide an initializer does not solve the problem. 
The crucial point is the problem is *not* the seg fault, the seg fault 
is the symptom. The problem is the user has not set the object to a 
value that his program's logic requires.
I am also perfectly happy with NonNull being a type constructor, to be 
used where appropriate. My disagreement is with the notion that null 
references should be eliminated at the language level.
    
    
More information about the Digitalmars-d
mailing list