Cuándo se asignan / inicializan las variables estáticas de nivel de función?

Estoy bastante seguro de que las variables declaradas globalmente se asignan (e inicializan, si corresponde) al momento del inicio del programa.

int globalgarbage;
unsigned int anumber = 42;

¿Pero qué pasa con los estáticos definidos dentro de una función?

void doSomething()
{
  static bool globalish = true;
  // ...
}

Cuando es el espacio paraglobalish ¿asignado? Estoy adivinando cuándo comienza el programa. ¿Pero se inicializa entonces también? ¿O se inicializa cuandodoSomething()@ se llama por primera vez?

Respuestas a la pregunta(7)

Su respuesta a la pregunta