Рассмотрим, как в c ++ существуют эти две длительности хранения (среди прочих): статическая продолжительность хранения и продолжительность хранения потока..
Далее рассмотрим этот код:
static MyClassA a;
thread_local static MyClassB b;
Допустим, что «a» и «b» могут находиться не в одной и той же единице компиляции. Я «верю», что деструктор «b» будет вызываться до «a», так как продолжительность хранения потока будет заканчиваться первой, и только после того, как это будет завершено, статическая продолжительность хранения завершится и вызовет деструктор «a». Я искал стандартную ссылку на это, но я не смог найти. Может ли кто-то конкретно подтвердить это авторитетным источником?
Деструкторы для инициализированных объектов с длительностью хранения потока
в данном потоке вызываются в результате возврата из
начальная функция этого потока и в результате этого вызова потока
std::exit
, Завершение деструкторов для всех инициализированных
объекты с продолжительностью хранения потока в этом потоке упорядочены
до инициирования деструкторов любого объекта со статическим
срок хранения.