【发布时间】:2012-06-27 13:35:58
【问题描述】:
如何删除绑定到this对象的成员函数的函数:
std::vector<std::function<void(int)>> callbacks;
class MyClass {
public:
MyClass() {
callbacks.push_back(
std::bind(&MyClass::myFunc,this,std::placeholders::_1)
);
}
~MyClass() {
auto it = std::remove_if( std::begin(callbacks),
std::end(callbacks),
[&](std::function<void(int)>& f) {
return // <-- this is my question
// true (remove) if f is bound to member function
// of this
});
callbacks.erase(it,std::end(callbacks));
}
void myFunc(int param){...}
};
【问题讨论】:
-
@K-ballo 你的意思是“无法取回该信息”吗?
-
是的,对不起... 函数被某种类型擦除抽象出来
-
建议在没有资格的情况下致电(免费)
begin和end,让 ADL 完成工作,以防容器不符合标准的容器,成员begin和 @987654326 @.
标签: c++ vector c++11 bind std-function