インターネット上のどこかで、組み込みの C++ RTTIを使用しない ID クラスに対する簡単な解決策を見つけました。
template <typename T>
class Identity {
public:
static int64_t id()
{
static int64_t dummy;
return reinterpret_cast<int64_t>(&dummy);
}
};
クラス ID が必要な場合は、以下を使用します。
Identity<OurClass>::id();
衝突はありますか?異なるクラスに対して同じ ID を返すことができますか、または同じクラスに対して異なる ID を返すことができますか? このコードを g++ でさまざまな最適化値で試してみましたが、すべて問題ないようです。