Есть ли хороший способ избежать const_cast
ниже, сохраняя при этом константную корректность?
Без const_cast
приведенный ниже код не компилируется. set::find
получает ссылку const на тип заданного ключа, поэтому в нашем случае он не должен изменять значение указателя переданного; однако ничто не гарантировало, что он не изменит то, на что указывает указатель.
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();
}
};