Стандарт С++ 3.6.3:
Деструкторы для инициализированных объектов статической продолжительности вызываются в результате возврата из main и в результате вызова exit
В Windows у вас есть FreeLibrary, а у linux есть dlclose, чтобы выгрузить динамически связанную библиотеку. И вы можете вызвать эти функции, прежде чем вернуться с основного.
Побочным эффектом разгрузки общей библиотеки является то, что все деструкторы для статических объектов, определенных в библиотеке, запускаются.
Означает ли это, что это нарушает стандарт С++, поскольку эти деструкторы запущены преждевременно?