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

2024-01-07

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

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

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

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


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

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

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

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

  • C++:无法使用scoped_allocator_adaptor传播polymorphic_allocator

    我有一个vector
  • 在 Xamarin Android 中将图像从 URL 异步加载到 ImageView 中

    我有一个包含多个项目的 ListView 列表中的每个项目都应该有一个与之关联的图像 我创建了一个数组适配器来保存每个列表项并具有我希望加载的图像的 url 我正在尝试使用 Web 请求异步加载图像 并设置图像并在加载后在视图中更新它 但视
  • 如何在C++中实现模板类协变?

    是否可以以这样一种方式实现类模板 如果模板参数相关 一个对象可以转换为另一个对象 这是一个展示这个想法的例子 当然它不会编译 struct Base struct Derived Base template
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器

随机推荐

  • 检测 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 这是不希望的 因为它会导致额外的维护 例如 如果类成员被重命名 重新排序