Andrei AlexandrescuはModern C++ Designで次のように書いています。
によって返されるオブジェクトに
typeid
は静的ストレージがあるため、有効期間の問題について心配する必要はありません。
アンドレイは続けます:
標準では、たとえば の各呼び出しが同じオブジェクト
typeid(int)
への参照を返す ことは保証されていません。type_info
標準ではこれが保証されていませんが、GCC や Visual Studio などの一般的なコンパイラではどのように実装されているのでしょうか?
typeid
リークしない (そして呼び出しごとに新しいインスタンスを返す)と仮定すると、それはアプリケーションごと、翻訳単位ごと、dll/so ごと、またはまったく異なるものごとに 1 つの「テーブル」ですか?
ときはあり&typeid(T) != &typeid(T)
ますか?
私は主に Windows 用のコンパイラに興味がありますが、Linux やその他のプラットフォームに関する情報も歓迎します。