首页 > 后端开发 > C++ > 正文

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

Mary-Kate Olsen
发布: 2024-10-30 15:55:03
原创
841 人浏览过

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

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

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

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

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

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!