Inicialización constante "sorprendente" debido al orden de definición

Al leer elslides sobre constexpr la introducción es sobre "inicialización sorprendentemente dinámica con consts". El ejemplo es

struct S {
    static const int c;
};
const int d = 10 * S::c;
const int S::c = 5;

Alas, falta la pista de audio, al igual que las notas, así que solo puedo adivinar lo que significa aquí.

¿Es correcto qued se inicializa "sorprendentemente" dinámicamente, porqueS::c se defineantes d d? Que eldeclaració deS::c es antes dedrobablemente @ no sea suficiente, el compilador necesita la @ compledefinició, ¿derecho

Dicho eso, sospecho, que en el siguiente ejemplod harí ser inicializado estáticamente?

struct S {
    static const int c;
};
const int S::c = 5;
const int d = 10 * S::c;  // now _after_ defn of S::c

Y para tomar el pastel, en C ++ 11, lo que tendría que serconstexpr para una inicialización estática completa? @S::c, d ¿o ambos

Respuestas a la pregunta(4)

Su respuesta a la pregunta