I thought that something like this

// not_null_struct.d

NotNull!(T) assumeNotNull(T : Object)(T t) {
        return NotNull!(T)(t);
}

@property
NotNull!(T) makeNotNull(T : Object)() {
        T t = new T();
        
        return assumeNotNull(t);
}

// not_null.d which import not_null_struct.d

NotNull!(Foo) _convert() {
        //return NotNull!(Foo)(this); // prints: Stack overflow
        return assumeNotNull(this);
}

alias _convert this;

would allow me to convert Foo to NotNull!(Foo) implicit. But it doesn't work. I get this error:

not_null.d(37): Error: template instance not_null_struct.assumeNotNull!(Foo) recursive expansion

Line 37 is the return in the _convert method.

Does anybody know why? I thought that would a smart idea...


Reply via email to