Cannot alias null

monarch_dodra via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Jun 12 15:37:07 PDT 2014


On Thursday, 12 June 2014 at 21:58:32 UTC, Adam D. Ruppe wrote:
> since null is a value maybe you want
>
> enum blah = null;
>
> you may also give it a type after the enum word

I *think* the issue might be that "null" is an rvalue? Because 
you can alias variable names all you want. I do it all the time 
for templates where I *may* need a temporary.

eg:

void foo(T)(T val)
{
     static if (isUnsigned!T)
         alias uval = val;
     else
         auto uval = unsigned(val);
     ...
}

It's also quite useful with varargs:
alias a0 = args[0];

Also, you can't alias things like "int.init" either. I'm not sure 
the "rvalue" thing is the source, because these work:

//----struct S
{
     static int i;
     static int j() @property;
}
alias a = S.i;
alias b = S.j;
//----

I'd consider filling a bug report.


More information about the Digitalmars-d-learn mailing list