On Tuesday, 4 February 2014 at 18:26:10 UTC, deadalnix wrote:
static if(isReferenceType!T) {
union {
T t;
typeof(null) __;
}
}
cool, that would work. @nullable is now totally dead to me.
* 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.
"@nullable int" wouldn't work. A nullable int needs a separate
field to store if it has a value or not, since int == 0 is a
valid payload.
A Nullable!T template can store the separate field if needed (use
static if to add the field or use the union with typeof(null))
and thus work for all types with uniform user-side API.
I'm really confused now. What are you defending ??
Built-in references become not-null by default. Library type
Nullable!T is used when yo need null.