estaba leyendo las Qt convenciones de codificación documentos y me encontré con el siguiente párrafo:C++ estática global sin fines de POD: teoría y práctica
Cualquier cosa que tiene un constructor o necesita para ejecutar código que ser inicializado no se puede utilizar como objeto global en el código de la biblioteca, ya que no está definido cuando ese constructor/código se ejecutará (en el primer uso, en la carga de la biblioteca, antes de main() o en absoluto). Incluso si el tiempo de ejecución del inicializador se define para bibliotecas compartidas, tendrá problemas al mover ese código en un complemento o si la biblioteca está compilada estáticamente.
Sé lo que dice theory, pero no entiendo la parte "nada". A veces utilizo estadísticas estáticas no relacionadas con POD (por ejemplo, QString) y nunca se me ocurrió que podrían no haberse inicializado ... ¿Es esto específico de los objetos compartidos/DLL? ¿Esto sucede solo para compiladores rotos?
¿Qué opinas sobre esta regla?
Su QString puede no inicializarse si no las usa. Pero si los usa, se inicializarán. Incluso si esto es justo antes del uso (es decir, justo antes de que se invoque un método sobre el objeto). –