c++ - Clang 的 'type_visibility' 属性有什么作用,什么时候应该使用它?

标签 c++ c++11 clang libc++

它在libc++中用于许多模板类型,例如tuple_elementtuple

据我所知,除了 commit message 之外,没有关于它的作用的公开文档。介绍它和这个unit test在 clang 项目中。

最佳答案

此属性允许 ELF visibility类型和(可能)它的模糊链接对象(vtable、typeinfos)的控制与该类型的函数和数据成员的可见性分开。

这使得 typeinfos 和 vtable 可以集中定位,例如,模板化多态类型的显式实例化,而不会强制该类型的私有(private)静态数据成员的默认可见性 - 为没有人实际访问的东西导出符号使用共享库时,跨越库边界会浪费运行时和符号表空间。

关于c++ - Clang 的 'type_visibility' 属性有什么作用,什么时候应该使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28437772/

相关文章:

c++ - 嵌套可变参数模板 : bug in gcc or clang?

debugging - 使用 clang 编译到 wasm 时如何保留变量名称

c++ - 如果 child 不需要父类的所有 protected 成员,这是不是糟糕的类设计?

c++ - 当在 C++11 中使用带有两个声明的 auto 时会发生什么?

c++ - 如何 boost::serialize std/boost::optional?

c++ - 为什么没有更多地使用clang?

command-line - 在 clang 命令行中覆盖参数

c++ - 一个类和 XCode 中的多个数组

C++ 八叉树容器

使用 valgrind 进行分块矩阵乘法的 C++ 性能分析