`static` symbol needs to be `immutable` for compile-time access?
    Mike Parker via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Fri Jan 22 02:15:19 PST 2016
    
    
  
On Friday, 22 January 2016 at 09:56:27 UTC, Shriramana Sharma 
wrote:
> In C/C++ the `static` here is used to avoid the array being 
> created every time the function is entered; in D too it does 
> the same thing, no? So if I have an array of constants in a 
> function that I need to be accessible to a template at compile 
> time, and I (for obvious reasons) don't want to be initialized 
> at every function call, do I have to declare it `static 
> immutable`?
A static variable is still a runtime variable. It's effectively 
the same as declaring a variable outside of the function scope at 
module scope, except that it's visible only in the current scope 
and the function name gets mangled into the symbol
int i;
void foo() {
    static int j;
}
j is no more a compile-time value than i is. If you want an array 
of constant values available at compile-time, then you need to 
declare the array as immutable.
    
    
More information about the Digitalmars-d-learn
mailing list