原文
enum canBeNull(T) = is(typeof({T t; t = null;})); static assert(canBeNull!(Object)); static assert(!canBeNull!(int));
我这样,可重载opAssign和opCmp. 我检查static if(is(typeof(null) : T))(可隐式转换为T),或用__traits(compiles, v is null)更好.
opAssign
opCmp
static if(is(typeof(null) : T))
__traits(compiles, v is null)