class Clank { public: Handle locus; size_t distance; }; class Handle { private: const void *ptr; const std::type_info *tid; public: bool operator==(const Handle &h) const { return ptr == h.ptr && tid == h.tid; } // ... };