Nullable or Optional? Or something else?

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Thu Sep 3 08:38:13 PDT 2009


Andrei Alexandrescu wrote:
> Leandro Lucarella wrote:
>> Andrei Alexandrescu, el  2 de septiembre a las 14:39 me escribiste:
>>> I plan to add a Nullable struct to Phobos (akin to C#'s Nullable, 
>>> Boost's Optional).
>>>
>>> Apparently a good design is to define Optional!T with a minimum of 
>>> member functions (ideally none) and have it use the "alias this" 
>>> feature to masquerade as a T. That way Optional!T looks and feels 
>>> much like a T, except that it supports a function
>>>
>>> bool isNull(T)(Optional!T value);
>>>
>>> Am I on the right track? If so, what is the name you'd prefer for 
>>> this artifact?
>>
>> Maybe this is a very silly question, but what is exactly the difference
>> between Optional!T o/isNull(o) and T* o/o is null?
> 
> It's a good question. There are two differences: (a)  Optional!T behaves 
> almost like a T in expressions, and (b) Optional!T does not support most 
> features of pointers, such as arithmetic and comparison.
> 
> Andrei

The answer above is incorrect. I actually answered about OptionalRef!T. 
Steve's answer is correct.

Andrei




More information about the Digitalmars-d mailing list