Listing 5

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;
  }
  // ...
};