I was squinting at the std.typecons.NullableRef code and it _looks_ like isNull is only checked at runtime (and not checked at all in release mode!) but D has surprised me before in its ability to pre-calculate stuff during compilation.

I was thinking of using something like this:

http://arsdnet.net/dcode/notnullsimplified.d

...which does the check once (during runtime) but after that it's compile-time verified not to have a null pointer. (Sort of like C++ references!) I think using NullableRef instead would have every instance of getting the pointer perform the check at runtime, even if it has already been verified as not null. That's correct, right? Yes I know, premature optimization etc, but I was just curious if a NotNull template might be a stronger declaration of a pointer's nullness.

Reply via email to