On Tuesday, 4 February 2014 at 14:54:35 UTC, Adam D. Ruppe wrote:
This gives us:
* Implementation help - no binary cost for Nullable!Object
since it just uses null directly instead of a bool isNull field
(the optimizer also knows this)
static if(isReferenceType!T) {
union {
T t;
typeof(null) __;
}
}
* Consistency with all other types. Nullable!int works,
Nullable!Object can be passed to a template, inspected, etc.
without new traits for isNullable and everything.
I'm not sure I understand that.
* Library functionality so we can also make other types that do
the same kind of thing
I'm really confused now. What are you defending ??
Then, if we did the Type? syntax, it would just be rewritten
into Nullable!Type. Nullable's definition would probably be in
the auto-imported object.d so it always works.
??????