NULL indicator in Variant

Regan Heath regan at netmail.co.nz
Fri Oct 28 03:00:23 PDT 2011


On Fri, 28 Oct 2011 10:23:03 +0100, Regan Heath <regan at netmail.co.nz>  
wrote:

> On Thu, 27 Oct 2011 19:06:47 +0100, Steve Teale  
> <steve.teale at britseyeview.com> wrote:
>> On Thu, 27 Oct 2011 13:58:54 -0400, Steven Schveighoffer wrote:
>>> Why wouldn't you just wrap variant if you want to introduce a nullable
>>> variant type?  Why does Variant have to be muddied with requirements  
>>> for
>>> database API?  Database null is an entirely different animal from D's
>>> null.
>>
>> Well, yes, that was my first reaction, but I thought I'd ask - if there
>> was a spare bit somewhere in Variant, would it do much harm, and Variant
>> is getting a makeover. Maybe there are circumstances other than database
>> interactions where it could be useful.
>
> Could you wrap std.typecons.Nullable around it?  It's currently  
> disabled, but a quick copy/paste into my own src, plus templating the  
> opAssign e.g.
>
> /**
> Assigns $(D value) to the internally-held state.
>   */
>      void opAssign(T value)
>      {
>          enforce(_value);
>          *_value = value;
>      }
>

err.. sorry, I meant:

/**
Assigns $(D value) to the internally-held state. If the assignment
succeeds, $(D this) becomes non-null.
  */
     void opAssign(T)(T value)
     {
         _value = value;
         _isNull = false;
     }

:p

R


More information about the Digitalmars-d mailing list