Jason House:

> The opAssign kills all type safety. I think only NotNull!T should 
> be accepted... So "foo = bar" won't compile if bar is nullable. 
> To fix, "foo = NotNull(bar)",

I think NotNull also needs this, as a workaround to what I think is a DMD bug:

    @disable enum init = 0;

It disallows code like:
auto f1 = NotNull!Foo.init;

And I think NotNull needs a guard, to refuse std.typecons.Nullable:

struct NotNull(T) if (!IsNullable!T) {...

Where the IsNullable template is similar to std.typecons.isTuple (I think 
std.typecons needs a isTemplateInstance(T,Template)).

Bye,
bearophile

Reply via email to