Andrei Alexandrescu пишет в Modern C++ Design:Когда typeid может возвращать разные экземпляры type_info для одного и того же типа?
Объекты, возвращаемые
typeid
имеют статической памяти, так что вам не придется беспокоиться о пожизненных вопросов.
Андрей продолжает:
стандарт не гарантирует, что каждый вызов, скажем,
typeid(int)
возвращает ссылку на тот жеtype_info
объекта.
Несмотря на то, что стандарт не гарантирует этого, как это реализовано в обычных компиляторах, таких как GCC и Visual Studio?
Предполагая, что typeid
не просачивается (и возвращает новый экземпляр каждый звонок), это одна «таблица» для каждого приложения, на единицу перевода, за dll/so или что-то совершенно другое?
Есть еще раз, когда &typeid(T) != &typeid(T)
?
Меня интересуют только компиляторы для Windows, но любая информация для Linux и других платформ также приветствуется.
Важной причиной такого уровня свободы действительно была проблема с DLL. – MSalters