Как избежать const_cast при вызове std :: set :: find

Есть ли какой-нибудь хороший способ избежать приведенного ниже 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();
   }
};
10
задан Danra 9 May 2016 в 14:20
поделиться