Spec#, nullables and more

Simen kjaeraas simen.kjaras at gmail.com
Sat Nov 6 17:27:46 PDT 2010


Walter Bright <newshound2 at digitalmars.com> wrote:

> I don't see that non-null is such a special case that it would benefit  
> from a special case syntax. For example:

There are some things that set non-null apart:

1. Few operations change the value of a pointer/class reference:
    assignment
    pointer arithmetic
    ref passing
Of these, the last two can be disallowed in most cases. For e.g. an
int, operator overloading adds bunches of more cases, and for structs/
classes where fields factor into the calculation, every single public
member function and field would need to be wrapped. Simply put, null
pointers are low-hanging fruit.

2. There is a single invalid value
This is a simplification, of course, as you could argue that a reference
to an A is not a valid reference to a B, and pointers may point to
arbitrary areas of memory, where nothing of interest may be found.
Again, low-hanging fruit.


>> The value 25 requires far more context for the compiler to identify it  
>> as a bad value and determine how the developer should handle it.
>
> The compiler wouldn't do it. It would be a user supplied filter for a  
> user defined subtype.

Definitely a possibility, also for non-nullable. However, for such a
system to be foolproof (and that's what we want), we need a way to
disable the default constructor for structs.

There is also the problem of arrays, as I expounded on in a different
post. Without language support, this will be a hole in the system.

-- 
Simen


More information about the Digitalmars-d mailing list