Clang的'type_visibility'属性做什么,什么时候应该使用它?

Ada*_*idy 17 c++ clang c++11 libc++

它在libc中使用++在很多模板类型,如tuple_element,tuple等.

据我所知,除了在clang项目中引入它和此单元测试提交消息之外,没有公开文档说明它的作用.

LTh*_*ode 7

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

这允许将typeinfos和vtable(例如,模板化多态类型的显式实例化)集中定位,而不强制对类型的私有静态数据成员进行默认可见性 - 导出任何人无法在库中实际访问的内容的符号在使用共享库时,边界会浪费运行时和符号表空间.