Inicialización estática C ++ vs __attribute __ ((constructor))

Ejemplo

struct Foo { Foo() { printf("foo\n"); } };
static Foo foo;

__attribute__((constructor)) static void _bar() { printf("bar\n"); }

Es determinista sifoo obar se imprime primero?

(Espero y esperaría que los constructores de objetos estáticos siempre se ejecuten primero, pero no estoy seguro, y el documento de GCC sobre el atributo del constructor no dice nada al respecto).

Respuestas a la pregunta(4)

Su respuesta a la pregunta