为什么匿名命名空间中定义的符号(函数和变量)与static关键字没有内部链接?如果某个功能在外面不可见/可访问,那么外部链接的原因是什么?
Ste*_*sop 37
在C++ 03中,禁止将具有内部链接的名称用作模板参数[*].因此,未命名的命名空间中的大多数内容的名称都有外部链接,以允许它们与模板一起使用.您可以通过声明它在未命名的命名空间中明确地给出名称内部链接static,与命名或全局命名空间中的相同.
在C++ 11中,两个方面都发生了变化 - 默认情况下,未命名的命名空间中的名称具有内部链接(3.5/4),具有内部链接的名称可以用作模板参数.
[*]对于类型,它必须具有外部链接.对于对象和函数,如果其地址用作模板参数,则它必须具有外部链接,尽管例如可以将具有内部链接的const整数的值用作模板参数.
| 归档时间: |
|
| 查看次数: |
2141 次 |
| 最近记录: |