有时,用户实现的函数具有与其隐式定义版本相同的功能。例如,复制构造函数只调用其所有成员的复制构造函数。
struct A
{
int B;
A(const A& a) : B(a.B) { }
}
这是不希望的,因为它会导致额外的维护,例如,如果类成员被重命名/重新排序等,并且会降低可读性。此外,添加这些功能还意味着诸如std::is_trivially_copy_constructable
声称该类型不能被简单地复制构造(但实际上,它实际上可以)。
我有一个代码库,这似乎是常见的情况,我想通过删除这些实现来纠正它。然而,我对删除似乎与隐式实现相同的功能感到不安,以防它实际上并不等效。有没有一种方法可以确定一个函数是否与其隐式版本等效? (使用任何工具集/语言变体/等都是可以接受的)。
我的建议是不要尝试以编程方式确定这些函数是否与默认实现相同,因为差异实际上可能是一个错误(他们应该有正常的默认行为)。
相反,我只是建议编写一组单元测试来负责测试expected各种函数的行为,然后确保它们传递默认实现。这样您不仅拥有一个用于未来增强功能的测试框架,您还可以确信这些功能满足了您的要求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)