On 27/08/2018 4:37 AM, SG wrote:
Hi again,
The code below works for some cases but not for the Nullable!Type.
A way to fix it should be check the type and use ".isNull" for
Nullabe!Type. But is there a simple way to test if value is null for
every case?
import std.stdio, std.typecons, std.variant, std.conv;
bool foo(T)(T t){
return (t is null);
}
class S{
Nullable!int i;
}
void main(){
string x = "a";
writeln(x is null," - " ,x.foo);
string y = null;
writeln(y is null," - ", y.foo);
auto z = null;
writeln(z is null," - ", z.foo);
S s = new S();
writeln(s.i.isNull); // Ok
//writeln(s.i is null); // Error
//s.i.foo(2); // Error
}
UFCS function called isNull.
e.g.
import std.traits : isPointer;
bool isNull(T)(T value) if (is(T == class) || isPointer!T) {
return value is null;
}