请教各位大牛,如何比较两个std::function是否相等?

clxye314 2014-08-21 09:39:31
我想保存多个std::function对象,同时支持移除操作。移除操作必须能够区分各std::function。
所以,请问如何区分两个std::function是否相等?
...全文
558 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hoey168 2021-07-21
  • 打赏
  • 举报
回复

正解:
template<typename R, typename... ARG>
bool isEqual(const std::function<R(ARG...)>& a, const std::function<R(ARG...)>& b){
typedef R(FuncType)(ARG...);
return a.target_type().name() == b.target_type().name() && a.template target<FuncType*>() == b.template target<FuncType*>();
}

zhuyf87 2014-08-21
  • 打赏
  • 举报
回复
boost::function倒是重载了operator==和operator!=,但好像是仅仅可以与被包装的函数或函数对象进行比较。两个function对象不能使用==和!=直接比较。
clxye314 2014-08-21
  • 打赏
  • 举报
回复
肯定不支持啊,支持了我就不会到这问这样的低级问题了。
hzhxxx 2014-08-21
  • 打赏
  • 举报
回复
看看 std::function 是否支持 == 运算符。
clxye314 2014-08-21
  • 打赏
  • 举报
回复
估计这贴又得黄了,除非能碰到非常牛逼的人。 算了,结贴。

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧