Cómo se implementa la inicialización de la variable estática por el compilador?

Tengo curiosidad por la implementación subyacente de variables estáticas dentro de una función.

Si declaro una variable estática de un tipo fundamental (char, int, double, etc.), y le doy un valor inicial, imagino que el compilador simplemente establece el valor de esa variable al comienzo del programa antes demain() se llama

void SomeFunction();

int main(int argCount, char ** argList)
{
    // at this point, the memory reserved for 'answer'
    // already contains the value of 42
    SomeFunction();
}

void SomeFunction()
{
    static int answer = 42;
}

Sin embargo, si la variable estática es una instancia de una clase:

class MyClass
{
    //...
};

void SomeFunction();

int main(int argCount, char ** argList)
{
    SomeFunction();
}

void SomeFunction()
{
    static MyClass myVar;
}

Sé que no se inicializará hasta la primera vez que se llame a la función. Dado que el compilador no tiene forma de saber cuándo se llamará a la función por primera vez, ¿cómo produce este comportamiento? ¿Esencialmente introduce un bloque if en el cuerpo de la función?

static bool initialized = 0;
if (!initialized)
{
    // construct myVar
    initialized = 1;
}

Respuestas a la pregunta(10)

Su respuesta a la pregunta