STL容器的重载运算符==

时间:2010-07-23 05:31:36

标签: c++ operator-overloading boost-any

我正在尝试从list<boost::any> l

中删除一个类对象
l.remove(class_type);

我尝试将这样的东西写成成员函数

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

如何编写一个重载函数来从boost::any的std :: list中删除类的对象?

1 个答案:

答案 0 :(得分:2)

虽然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)); ,例如:

{{1}}