D 2.x invariant question

Jarrett Billingsley kb3ctd2 at yahoo.com
Wed Oct 31 16:45:30 PDT 2007


"Charles D Hixson" <charleshixsn at earthlink.net> wrote in message 
news:fgao71$21fp$1 at digitalmars.com...
> Would the following function:
> invariant Body opIndex (Key k)
> {  if (k in _cache)
>    { ....
>       return  _cache[k].bdy;
>    }
>    return  null;
> }
>
> return values that were invariant, or would that type have to be declared 
> at the declaration of the type "Body"?

I think this makes the method opIndex invariant, which means this function 
can only access invariant members, or something.  If you want an 
invariant(Body), use... invariant(Body) as the return type.

Aside: performance increase, you can avoid the double lookup:

if(auto val = k in cache)
{
    ..use val here..
    return val.bdy;
}

'in' returns a pointer to the value, and you can declare and assign a 
variable in the condition of an 'if' statement. 




More information about the Digitalmars-d-learn mailing list