Я нашел простое решение где-то в Интернете в классе идентификации без встроенного С++ RTTI.
template <typename T>
class Identity {
public:
static int64_t id()
{
static int64_t dummy;
return reinterpret_cast<int64_t>(&dummy);
}
};
Когда нам нужен идентификатор класса, мы просто используем:
Identity<OurClass>::id();
Мне интересно, есть ли какие-то столкновения? Может ли он возвращать одинаковый идентификатор для разных классов или другой идентификатор для тех же классов? Я пробовал этот код с g++ с разными значениями оптимизации, все выглядит нормально.