On Monday, May 27, 2013 09:59:32 deadalnix wrote: > On Monday, 27 May 2013 at 07:45:41 UTC, Jonathan M Davis wrote: > > I don't see why. NotNull would statically prevent assigning > > null to it (which > > is easy to do, since null has its own type) and will assert > > that any > > references assigned to it are null. You then have the guarantee > > that NotNull!T > > is never null. What would a built-in type do that that doesn't? > > The one point > > where null could get in - when constructed from a nullable > > reference - would > > have to be checked with a built-in type as well. The only way > > to prevent it is > > to make it illegal to assign a nullable reference to a > > non-nullable one and > > make it so that construction has to occur within the the > > non-nullable > > reference - e.g. NotNull!T(args). > > That is not enough. NotNull must be initialized, so the compiler > have to track initialization in way it don't do today. This is > the exact same processing required to ensure non null references.
@disable this(); would solve that. - Jonathan M Davis