gpt4 book ai didi

c++ - 自动判断用户自定义函数是否等同于隐式函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:43:04 26 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

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

关于c++ - 自动判断用户自定义函数是否等同于隐式函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40257664/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com