У меня есть управляемая и упрощенная система журналов - однако, как она работает, она должна отслеживать некоторое глобальное состояние.Это делается с помощью синглтона Мейера, который инициализируется при первом использовании.Однако, это, кажется, имеет недостаток: возможно вызвать что-то, что будет зарегистрировано после того, как синглтон был уничтожен (если порядок не известен - что может быть трудно утверждать в более крупной программе) - приводя к UB (сбой при завершении работыСкорее всего).
Низкоуровневая функция журнала выглядит примерно так:
void logImpl(const char* log, const std::string& message, Severity::Type level) {
static LogSys& logSys = LogSys::instance();
...
}
Я, конечно, могу навязать проблему «пользователю» библиотеки, но это не такдействительно решить проблему (все еще ручная обработка).Решит ли что-либо встроенное статическое в .h что-нибудь? (Наверное, нет).У нас есть деструктор одиночного прогона, но имеет ли смысл писать что-либо, чтобы указать, что он был уничтожен?Синглтон другого Мейера?Что произойдет, если вы инициализируете синглтон мейера во время статического разрушения?