Semantics of ^^

Don nospam at nospam.com
Wed Dec 9 06:03:53 PST 2009


Don wrote:
> Jason House wrote:
>> I think you have a bad corner case:
>>
>> enum int ct = -1;
>> immutable rt = -1;
>>
>> ct ^^ ct // Error (compile time)
This would always get rewritten.

>> rt ^^ ct // Error (compile time)
>> rt ^^ rt // Error (run time)
>> ct ^^ rt // Works??? (after rewrite)
> 
> No, they will all work. Both rt and ct are manifest constants.

(Actually it's a bit of wierd compiler quirk that const/immutables 
initialized with literal values are manifest constants; they aren't 
constants if initialized with anything else. This behaviour may change, 
but it doesn't affect this scheme).

If however rt is just

int rt = -1;

then

ct ^^ ct and ct ^^ rt work, and the other two fail. This is intended.




More information about the Digitalmars-d mailing list