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.

Reply via email to