Andrei Alexandrescu écrit dans Modern C++ Design:Quand typeid peut-il renvoyer différentes instances type_info pour le même type?
Les objets retournés par
typeid
ont stockage statique, de sorte que vous n'avez pas à vous soucier des problèmes à vie.
Andrei continue:
La norme ne garantit pas que chaque invocation, par exemple,
typeid(int)
renvoie une référence au même objettype_info
.
Même si la norme ne le garantit pas, comment cela est-il implémenté dans les compilateurs courants, tels que GCC et Visual Studio?
En supposant que typeid
ne fuit pas (et renvoie une nouvelle instance tous les appels), est-ce une "table" par application, par unité de traduction, par dll/so, ou quelque chose de complètement différent?
Y a-t-il des moments où &typeid(T) != &typeid(T)
?
Je m'intéresse principalement aux compilateurs pour Windows, mais toute information sur Linux et sur d'autres plateformes est également appréciée.
Une raison importante pour ce niveau de liberté était en effet la préoccupation pour les DLL. – MSalters