Я создаю собственную систему RTTI для своей системы событий. Ниже представлен класс EventTypeInfo
. Как видите, он не копируется, как и std :: type_info
.
class EventTypeInfo
{
public:
EventTypeInfo(const EventTypeInfo&) = delete;
EventTypeInfo& operator=(const EventTypeInfo&) = delete;
inline bool operator==(const EventTypeInfo& other) const {
return this == &other;
}
};
Способ, которым я создаю эти объекты для каждого класса событий, сводится к следующему:
template<class EventClass>
const EventTypeInfo& event::type::info()
{
static EventTypeInfo typeinfo;
return typeinfo;
}
Учитывая, что (1) эти объекты создаются статически (что означает, что они будут существовать в течение всего периода application), (2) они не копируются и (3) нет способа изменить поля EventTypeInfo
, не прибегая к const_cast
, мне достаточно реализовать ] operator ==
является термином this == & other
, или я что-то пропустил?