-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


обнуление статического вектора члена класса

Понедельник, 30 Августа 2021 г. 00:34 + в цитатник
Qraizer: По этим обрывкам наверняка сказать ничего нельзя. Предположу, что проблема в порядке инициализации статических объектов: порядок инициализации в пределах одной единицы трансляции определяется порядком определений объектов, порядок инициализации в разных единицах трансляции неопределён.
Похоже, что сначала инициализируется init, который вызывает TCreatorTran<>::Registration(), которая делает std::vector<>::push_back(), который чудесным образом не валит приложение в эксепшн на использовании неинициализированного объекта, и только потом отрабатывает конструктор по умолчанию(?) этого вектора TCreatorTran<>::m_Patern, который благополучно инициализирует объект, как и положено, пустым.

Добавлено
P.S. Т.к. TCreatorTran<> суть шаблон, то если он не инстаницирован явно, он и его статические элементы будут конкретизированы и инстанцированы неявно в точке инстанцирования. Таковая в подобной ситуации всегда будет после определения экземпляра TInitTSourcesFunctor, потому что только тут (?) впервые используется TCreatorTran<> с конкретными шаблонными аргументами.

https://forum.sources.ru/index.php?showtopic=422685&view=findpost&p=3851399

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку