我有一个weak_ptrs 列表,用于跟踪对象。在某个时刻,我想从列表中删除一个给定 shared_ptr 或 weak_ptr 的项目。
#include <list>
int main()
{
typedef std::list< std::weak_ptr<int> > intList;
std::shared_ptr<int> sp(new int(5));
std::weak_ptr<int> wp(sp);
intList myList;
myList.push_back(sp);
//myList.remove(sp);
//myList.remove(wp);
}
但是,当我取消注释上述行时,程序将不会构建:
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\list(1194): error C2678: binary '==' : no operator found which takes a left-hand operand of type 'std::tr1::weak_ptr<_Ty>' (or there is no acceptable conversion)
如何从给定 shared_ptr 或 weak_ptr 的列表中删除项目?