* Can never be assigned the null literal (compile time error).
* If assigned a null value at runtime an exception will be thrown.
NotNull!T can be substituted for T at any time, but T cannot become
NotNull without some attention: either declaring NotNull!T, or using the
convenience function, enforceNotNull!T.
intmyInt;
NotNull!(int *) not_null = &myInt;
// you can now use variable not_null anywhere you would// have used a regular int*, but with the assurance that// it never stored null.
An of a reference type T never being null.
* Must be initialized when declared.
* Can never be assigned the null literal (compile time error).
* If assigned a null value at runtime an exception will be thrown.
NotNull!T can be substituted for T at any time, but T cannot become NotNull without some attention: either declaring NotNull!T, or using the convenience function, enforceNotNull!T.
Condition: T must be a reference type.