首页  >  文章  >  后端开发  >  为什么我无法比较 `std::function` 对象是否相等?

为什么我无法比较 `std::function` 对象是否相等?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-30 15:55:03828浏览

Why Can't I Compare `std::function` Objects for Equality?

std::function 非相等可比性背后的谜团

std::function 封装了任意可调用对象,为相等比较提出了独特的挑战。实现这种比较需要所有可调用类型的相等可比性,这会给实现者带来很大的负担。此外,相同的功能可能会根据不同的参数绑定顺序产生不相等的比较。因此,在所有情况下保证等价这一不可能的任务会阻碍相等可比性。

C 11 草案中提到的“类型系统中可能存在的漏洞”可能指的是隐式转换中固有的歧义。删除相等运算符并强制显式使用可确保不存在从其调用生成的有效代码。

与 std::function 不同,std::shared_ptr 拥有明确定义的相等语义。当两个指针都为空或都引用同一个对象时,两个指针精确相等。这种明确定义的行为允许进行简单且有意义的相等比较。

以上是为什么我无法比较 `std::function` 对象是否相等?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn