C ++ не определяет порядок выполнения статических инициализаторов для объектов в разных единицах компиляции (порядок четко определен в единицах компиляции).
Рассмотрим ситуацию, когда у вас есть 2 статических объекта A и B, определенных в разных единицах компиляции. Скажем, объект B фактически использует объект A в своей инициализации.
В этом сценарии возможно, что B будет инициализирован первым и вызовет неинициализированный объект A. Это может быть одной вещью, которая подразумевается под «совсем нет» - объект используется, когда у него не было возможности инициализировать его самостоятельно (даже если он может быть инициализирован позже).
Я полагаю, что динамическое связывание может добавить сложности, о которых я не думал, потому что объект никогда не будет инициализирован. В любом случае, суть в том, что static initializatino создает достаточно потенциальных проблем, которых следует избегать, где это возможно, и очень осторожно обрабатывать там, где вы должны его использовать.