'final' variables
    Benji Smith 
    dlanguage at benjismith.net
       
    Tue Mar 20 09:46:50 PDT 2007
    
    
  
Andrei Alexandrescu (See Website For Email) wrote:
>> This is the part I'm not sure about. As with C++'s "const", I don't 
>> think the compiler can conclude anything and therefor it can't 
>> optimize anything. A "final" variable is not constant.
> 
> final int x = 42;
> 
> Change that :o).
> 
> Andrei
How does this interact with CTFE for variables that are declared as 
const. With previous versions of the compiler, I know that it would try 
to constant-fold this code, resulting in an inlined constant from the 
result of the CTFE:
    const int abc = kaboom();
That code shouts out to me (and to the compiler) that the kaboom() 
method MUST be evaluated at compile-time. But this code is not nearly so 
clear:
    final int xyz = shabam();
Just because xyz can't be re-bound after its initial assignment doesn't 
necessarily mean that shabam() should be executed at compile-time. With 
the new const/final/invariant semantics, how will the compiler know when 
to perform constant-folding (or, I suppose, "final-folding") on functions?
--benji
    
    
More information about the Digitalmars-d
mailing list