Nullable or Optional? Or something else?

Steven Schveighoffer schveiguy at yahoo.com
Thu Sep 3 08:22:16 PDT 2009


On Thu, 03 Sep 2009 10:40:13 -0400, Leandro Lucarella <llucax at gmail.com>  
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?

The difference is you don't have to store the T somewhere else.  That is,  
an Optional!T contains both the value if it is not null AND whether it is  
null or not.  With a T*, the value is stored elsewhere, and you may have  
aliasing problems.

-Steve



More information about the Digitalmars-d mailing list