Ist die Initialisierung des lokalen statischen Funktionsobjekts threadsicher?

Die folgenden beiden Funktionen erzeugen unterschiedliche Assemblys, was bedeutet, dass sie unterschiedlich sind. Kann mir jemand sagen, wie sie sich unterscheiden? Und ist die Funktion lokale statische Variableninitialisierung in func2 threadsicher oder nicht? Wenn die Antwort vom Compiler abhängt, würde ich gerne wissen, wie sich die gängigsten Compiler mit func2 verhalten würden.

int func1(int val)
{
    const auto impl = [](int v)
    {
        return v * 10;
    };

    return impl(val);
}

int func2(int val)
{
    static const auto impl = [](int v)
    {
        return v * 10;
    };

    return impl(val);
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage