Le C++ garantit que les variables d'une unité de compilation (fichier .cpp) sont initialisées dans l'ordre de leur déclaration. Pour un nombre d'unités de compilation, cette règle fonctionne pour chacune d'entre elles séparément (je parle des variables statiques en dehors des classes).
Mais, l'ordre d'initialisation des variables, n'est pas défini entre les différentes unités de compilation.
Où puis-je trouver des explications sur cet ordre pour gcc et MSVC (je sais que se fier à cela est une très mauvaise idée - c'est juste pour comprendre les problèmes que nous pouvons avoir avec le code hérité lors du passage à une nouvelle version majeure de GCC et à un système d'exploitation différent) ?