Inicialização estática em C ++ vs __attribute __ ((construtor))

Exemplo

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

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

É determinista sefoo oubar é impresso primeiro?

(Espero e espero que os construtores de objetos estáticos sejam sempre executados primeiro, mas não tenho certeza, e os documentos do GCC sobre o atributo construtor não dizem nada sobre isso

questionAnswers(2)

yourAnswerToTheQuestion