Продлить жизнь статической переменной в функции
От: Went  
Дата: 07.09.22 07:07
Оценка:
Здравствуйте. Хочется странного.
Есть функция — геттер синглтона:
Singleton& get_singleton()
{
  static Singleton s_singleton;
  return s_singleton;
}

По первому запросу объект создается, при разрушении статики — удаляется. Все хорошо.
Но иногда возникает ситуация, при которой происходят попытки обратиться к этому синглтону уже в процессе разрушения статики, и, иногда, уже после того, как переменная s_singleton разрушена.
Что делать? Я готов даже создавать новый экземпляр на куче или возвращать nullptr (допустим, функция возвращает указатель), но как надёжно определить тот факт, что статическая переменная уже разрушена? Можно поставить какой-то guard, который будет при разрушении ставить какую-то статическую переменную в особое состояние, но где гарантия, что дебагер, разрушая эту переменную, не затрёт её каким-то 0xDEADBEEF?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.