Есть ли какой-нибудь хороший способ избежать приведенного ниже const_cast
при сохранении правильности констант?
Без const_cast
приведенный ниже код не компилируется. set::find
получает константную ссылку на тип ключа набора, поэтому в нашем случае она гарантирует, что не будет изменено переданное значение указателя; однако ничего не гарантировало, что указатель не изменится.
class C {
public:
std::set<int*> m_set;
bool isPtrInSet(const int* ptr) const
{
return m_set.find(const_cast<int*>(ptr)) != m_set.end();
}
};