我知道编译器生成的函数、三规则和五规则。在现实世界的场景中,确定编译器实际创建了哪些编译器生成的函数(构造函数、赋值运算符、析构函数)可能并非易事。
有没有办法列出特定类的编译器生成的函数?
我主要对 Visual Studio 2019 和 Xcode 感兴趣,但更受欢迎的通用解决方案。
bol*_*lov 11
规则很复杂。我将从另一个答案中窃取,该答案引用了Howard Hinnant 演讲中的表格。
这里的寓意是,一个好的做法是不依赖编译器隐式声明并显式声明每个特殊成员(默认或删除,取决于您的需要)
“有没有办法列出特定类的编译器生成的函数?”
当然有。在Linux(和其他 Unix 系统)上,您可以使用nm
,readelf
并objdump
在生成的目标文件/库/可执行文件上反汇编它们并检查任何导出的符号(以及更多)。
我知道Windows上有类似的工具,但这不是我经常使用的平台,所以不幸的是我无法在那里命名确切的工具名称。
归档时间: |
|
查看次数: |
444 次 |
最近记录: |