Null references (oh no, not again!)

Christopher Wright dhasenan at gmail.com
Wed Mar 4 15:23:51 PST 2009


BCS wrote:
> Hello Walter,
> 
>> Andrei suggests making a library type work for this rather than a
>> language attribute, but it's still an extra thing that will have to be
>> specified everywhere where used.
>>
> 
> I've considered trying to make a template that compile time enforces 
> Non-null usage but can, with a version flag, be switched to a simple 
> alias/typedef of the internal type. Near zero overhead and possibly just 
> as strong a guard.

It's impossible.

You can create a struct that will throw an exception if you use it 
uninitialized, or if you try assigning null to it. But the struct cannot 
require that it is initialized.

You can add a contract that requires the struct be initialized, and put 
the contract and declaration in a template.



More information about the Digitalmars-d mailing list