Оператор перегрузки == для контейнера STL - PullRequest
0 голосов
/ 23 июля 2010

Я пытаюсь удалить объект класса из list<boost::any> l

l.remove(class_type);

Я пытался написать что-то вроде этого как функцию-член

bool operator == (const class_type &a) const //not sure about the arguments
{
   //return bool value
}

Как бы вы написали функцию перегрузки, чтобы удалить объект класса из списка std :: boost::any?

1 Ответ

2 голосов
/ 23 июля 2010

Хотя ваша подпись для operator== выглядит нормально, перегрузить ее для class_type недостаточно, поскольку boost::any волшебным образом не использует ее. Однако для удаления элементов вы можете передать предикат remove_if, например ::

template<class T>
bool test_any(const boost::any& a, const T& to_test) {
    const T* t = boost::any_cast<T>(&a);
    return t && (*t == to_test);
}

std::list<boost::any> l = ...;
class_type to_test = ...;
l.remove_if(boost::bind(&test_any<class_type>, _1, to_test));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...