Andrei Alexandrescu writes in Modern C++ Design:
The objects returned by
typeid
have static storage, so you don t have to worry about lifetime issues.
Andrei continues:
The standard does not guarantee that each invocation of, say,
typeid(int)
returns a reference to the sametype_info
object.
Even though the standard does not guarantee this, how is this implemented in common compilers, such as GCC and Visual Studio?
Assuming typeid
does not leak (and return a new instance every call), is it one "table" per application, per translation unit, per dll/so, or something completely different?
Are there times when &typeid(T) != &typeid(T)
?
I m mainly interested in compilers for Windows, but any information for Linux and other platforms is also appreciated.