自动判断用户定义函数是否与隐式函数等价

2024-01-07

有时,用户实现的函数具有与其隐式定义版本相同的功能。例如,复制构造函数只调用其所有成员的复制构造函数。

struct A
{
    int B;
    A(const A& a) : B(a.B) { }
}

这是不希望的,因为它会导致额外的维护,例如,如果类成员被重命名/重新排序等,并且会降低可读性。此外,添加这些功能还意味着诸如std::is_trivially_copy_constructable声称该类型不能被简单地复制构造(但实际上,它实际上可以)。

我有一个代码库,这似乎是常见的情况,我想通过删除这些实现来纠正它。然而,我对删除似乎与隐式实现相同的功能感到不安,以防它实际上并不等效。有没有一种方法可以确定一个函数是否与其隐式版本等效? (使用任何工具集/语言变体/等都是可以接受的)。


我的建议是不要尝试以编程方式确定这些函数是否与默认实现相同,因为差异实际上可能是一个错误(他们应该有正常的默认行为)。

相反,我只是建议编写一组单元测试来负责测试expected各种函数的行为,然后确保它们传递默认实现。这样您不仅拥有一个用于未来增强功能的测试框架,您还可以确信这些功能满足了您的要求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自动判断用户定义函数是否与隐式函数等价 的相关文章

随机推荐

  • 检测 Tomcat 中领域身份验证失败的原因

    我为 Tomcat 7 编写了一个自定义 Realm 我将其包装在 Tomcat 默认安装提供的锁定 Realm 中 锁定功能工作正常 但在我的 web xml 中 我有
  • 为什么我会收到源工具包服务终止错误? [复制]

    这个问题在这里已经有答案了 第二行有问题 什么 let modelURL NSBundle mainBundle URLForResource xxx withExtension momd let managedObjectModel NS
  • UITableView 重复 Firebase 数据

    我从 Firebase 收到重复的内容 但我似乎无法弄清楚我做错了什么 在 firebase 我有 6 个帖子 表格视图填充了 6 个单元格 但所有 6 个单元格都具有相同的数据 而其他 5 个帖子不存在 UITableViewCell t
  • 将键值列表转换为数据框

    我在 R 中有一个名为 国家 的键 值列表 print country CAM 1 5 TJK 1 1 SEN 1 7 键是一个国家的名称和该国家出现的值 我想将此列表转换为数据框 如下所示 country occurence 0 CAM
  • 为 Django Oscar 存储信用/虚拟货币应用程序?

    我希望为存储虚拟货币的客户建立一个商店信用模型 此商店信用应用程序将存储可用于支付产品费用的积分 在退货或某些方案中添加 是django oscar 账户 https github com django oscar django oscar
  • Delphi7 WCF方法输入参数

    我有 wcf web 服务 basicHttpBinding 我们的Delphi7客户端无法正确使用它 我已经使用 WCF 附加功能简化了 WSDL 好的 Delphi7 wsdl 导入器生成代理正确 现在我遇到了输入参数的问题 它们总是有
  • HTTP 404 与 Ajax.ActionLink

    我无法解决 404 错误 Global asax cs 中的默认路由 routes MapRoute Default controller action id new controller Home action Index id UrlP
  • SQL 或 LINQ:如何选择仅一个参数发生变化的记录?

    假设我们有这个列表 Id IdRef myColumn anotherColumn 448 70 1 228 449 70 1 2s8 451 70 1 228 455 70 2 2a8 456 70 2 s28 457 70 2 28 4
  • 匹配嵌套大括号的正则表达式

    我需要正则表达式来匹配正确的大括号 例如每个开一闭一abc abc bc xyz 我需要它 从中获取一切 abc bc xyz 没有得到 abc bc 我尝试使用 这对于正则表达式来说是不可能的 为此需要上下文无关语法 并且正则表达式仅适用
  • 检测图像是否像素化的最佳方法是什么?

    我试图判断图像是否像素化 我试图使用拉普拉斯方差方法来执行此操作 但我不确定它是否正常工作 因为使用我的代码返回的图像非常扭曲 像素化 方差非常高 为 1011 import sys import cv2 import imutils as
  • 比较列表中除您自己之外的项目

    我想比较列表中的项目 但不希望将其与其自身进行比较 我怎么做 我的代码 var students new List
  • 缺少对 verify(mock) 的方法调用,但有一个吗?

    介绍 我正在尝试进行一个测试来验证 使用 Mockito v1 9 5 的verify 一个带有签名的方法deinit 在界面中Bar在执行传递后调用Foo deinit 我遇到了一个我真的不明白的错误 这是FooTest java我正在尝
  • 在分支中应用补丁

    我收到了来自贡献者的补丁 显然 他在后备箱中制作了补丁 但是 我想将他的更改提交到一个新分支 我可以知道如何通过 Tortoise Hg 做到这一点吗 下面的说明假设您希望将补丁隔离在named branch 使用命令行 可以轻松地将补丁应
  • JAX-RS访问控制

    有人可以为我提供一些有关 JAX R Web 服务中的访问控制的指示吗 例如根据用户凭据 名称或任何其他标准限制访问 在sun手册中找不到任何有用的信息 提前致谢 阿迪尔 我个人使用 Spring security 来完成此任务 Sprin
  • 覆盖 Python cmd 模块中未记录的帮助区域

    我正在使用 Python 的 cmd 模块构建一个小型 CLI 工具 我不喜欢显示列出的未记录的命令 因此 当我输入 帮助 时 我只想显示记录的命令 当前输入帮助显示 Documented commands type help
  • 使用 LINQ 过滤集合

    假设我们有一个 Person 对象的集合 class Person public string PersonName get set public string PersonAddress get set 以及代码定义集合中的某处 List
  • 从命令行使用 git 属性

    我的仓库中有这样的配置 echo java diff java gt gt gitattributes 当我这样做时git diff 我得到了预期的结果 不过 我正在编写一个脚本来分析其他 git 存储库 所以我通常会这样做 git git
  • Vaadin 会话管理 - 它是如何工作的?

    在工作中 我们使用 Vaadin 开发一个 Web 应用程序 我是一位相当高级的 Java 程序员 我对 Vaadin 也有经验 但现在我已经到了需要将信息存储在用户会话中的地步 区域设置 用户名等属性 In the Vaadin 文档 h
  • Django Auth LDAP - 使用 sAMAccountName 直接绑定

    有两种方法可以使用 Django Auth LDAP 对用户进行身份验证 搜索 绑定和 直接绑定 第一个涉及匿名或使用固定帐户连接到 LDAP 服务器并搜索身份验证用户的可分辨名称 然后我们可以尝试再次使用用户的密码进行绑定 第二种方法是从
  • 自动判断用户定义函数是否与隐式函数等价

    有时 用户实现的函数具有与其隐式定义版本相同的功能 例如 复制构造函数只调用其所有成员的复制构造函数 struct A int B A const A a B a B 这是不希望的 因为它会导致额外的维护 例如 如果类成员被重命名 重新排序