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
#include <iostream>
int dummyFoo = ((std::cout << "foo"), 0);
#include <iostream>
int dummyBar = ((std::cout << "bar"), 0);
int main() {}
might produce as output:
foobar
or
barfoo
That may lead to Static Initialization Order Fiasco.