在C++中,可以static在翻译单元中使用关键字来影响符号的可见性(变量或函数声明).
在n3092,这被弃用了:
附件D.2 [depr.static]
在命名空间范围内声明对象时,不推荐使用static关键字(见3.3.6).
在n3225中,这已被删除.
它确实强调,为了与C兼容(以及将C程序编译为C++的能力),弃用令人讨厌.但是,直接将C程序编译为C++本身就是一种令人沮丧的经历,所以我不确定它是否值得考虑.
有谁知道为什么它被改变了?
可能重复:
静态关键字的弃用...不再?
在C++ 2003中,static不推荐使用namespace- :
[C++03: 7.3.1.1/2]:static在声明命名空间范围内的对象时,不推荐使用该关键字(见附录D); 所述 未命名的命名空间提供了一个更好的选择.
我无法找到C++ 2011中存在任何此类子句的位置(建议不引用),并且7.1.1似乎没有禁止命名空间 - static(如果有的话,这表明该功能最终已从语言中删除); 然而,这两个案例都没有列入C.2(这表明2003年和2011年之间存在重大差异).
名称空间是否static未被提及?