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.

Reply via email to