Whereas inside a Translation Unit, order of initialization of global variables is specified, order of initialization across Translation Units is unspecified.
So program with following files
foo.cpp
#include <iostream>
int dummyFoo = ((std::cout << "foo"), 0);
bar.cpp
#include <iostream>
int dummyBar = ((std::cout << "bar"), 0);
main.cpp
int main() {}
might produce as output:
foobar
or
barfoo
That may lead to Static Initialization Order Fiasco.