C++擦除删除类型失败

C++擦除删除类型失败,c++,C++,我有 我得到了大量模板参数推断/替换失败的编译错误列表: auto foo = [](FooPtr p) {return p->m_delete;}; std::deque<FooPtr> d = getD(); d.erase(std::remove(d.begin(), d.end(), foo), d.end()); 这个清单持续了很长一段时间。你知道我的擦除-删除操作有什么问题吗?你使用了错误的算法。remove需要一个值-FooPtr-如果要指定谓词,应该使用std

我有

我得到了大量模板参数推断/替换失败的编译错误列表:

auto foo = [](FooPtr p) {return p->m_delete;};
std::deque<FooPtr> d = getD();
d.erase(std::remove(d.begin(), d.end(), foo), d.end());

这个清单持续了很长一段时间。你知道我的擦除-删除操作有什么问题吗?

你使用了错误的算法。remove需要一个值-FooPtr-如果要指定谓词,应该使用std::remove\u


检查文档中的

d是指针,因此d->erase。。。否?d.擦除->提示:d是指针。对不起,输入错误。d是一个指针,但我做了一些更改,因为我认为这可能是一个问题。它不是。你能给我们一个答案吗?似乎解决了编译错误的是使用remove\u if而不是remove
/opt/rh/devtoolset-3/root/usr/include/c++/4.9.2/bits/stl_deque.h:258:5: note:   template argument deduction/substitution failed:

/opt/rh/devtoolset-3/root/usr/include/c++/4.9.2/bits/predefined_ops.h:191:17: note:   'std::shared_ptr<Foo>' is not derived from 'const std::deque<_Tp, _Alloc>'
{ return *__it == _M_value; }

/opt/rh/devtoolset-3/root/usr/include/c++/4.9.2/bits/predefined_ops.h:191:17: note:   'std::shared_ptr<Foo>' is not derived from 'const std::normal_distribution<_RealType>'

/opt/rh/devtoolset-3/root/usr/include/c++/4.9.2/bits/predefined_ops.h:191:17: note:   'std::shared_ptr<Foo>' is not derived from 'const std::list<_Tp, _Alloc>'
{ return *__it == _M_value; }