只是好奇,GCC 或 Clang 工具集目前是否实现了与 MSVC相同的 COMDAT 折叠(ICF) 等效的功能?如果没有,有什么计划吗?除了旧的 GCC 邮件列表消息之外,我似乎找不到任何关于该主题的最新权威链接。
如果不是,这是否意味着不同类型上的模板实例化始终是生成的二进制文件中的不同函数(在它们未完全内联的情况下),即使它们是二进制兼容的,或者是否有其他机制来处理这个在其他级别?
另外,有没有人发现 ICF 在实践中最小化生成的可执行文件的大小有很大的不同?我没有任何大型 MSVC 项目可以方便地对其进行测试。(我猜它只有在你碰巧在许多不同的 vtable-layout 兼容类型上实例化模板时才真正有帮助。)
最后,两个指向不同函数的函数指针在运行时比较相等是否符合 C++11 标准?这个链接似乎暗示它不是,但它适用于 C99。编辑:找到有关此主题的先前问题