比较 boost::function 与 functor.members.func_ptr 的相等性

问题描述

我目前正在尝试用 C++ 实现一个事件管理器。原则上,它将事件类型 (uint64_t) 映射到 boost::function<void(const IEventDataPtr&)> 列表。

用户可以通过调用 EventManager::add(boost::function<void(const IEventDataPtr&)> delegate,EventType event)注册新的监听器。但是,用户可能希望稍后取消注册其侦听器。这将涉及找到这个特定的函数对象并将其从相应的列表中删除

我知道 boost::functiongenerally not comparable。在调试器中玩弄时,我发现通过比较 functor.members.func_ptr 我实际上可以做我想做的事情。对于 lambda、boost::bind、静态成员函数和常规函数,它按预期工作。 这样做安全吗?有什么问题吗?

我的期望是相同的对象(即相同的 lambda、函数等)具有相同的地址,不与其他人共享。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)