Рассмотрим следующий фрагмент кода:
bool SomeObject::equal(const SomeObject& rhs) const
{
if (this == &rhs)
{
return true;
}
// check the state
}
Проблема с этим кодом заключается в том, что SomeObject
может переопределить operator&
(или кто-то может добавить его в будущем), что, в свою очередь, может нарушить эту реализацию.
Можно ли проверить, являются ли теги rhs
и *this
одним и тем же объектом, не находясь во власти реализации operator&
?