答案 0 :(得分:6)
让我们得到一些事实:
[[deprecated]]
属性的措辞如下
(基于N4269 7.6.5 [dcl.attr.deprecated],强调我的):
- 该属性可以应用于类的声明,typedef-name,变量,非静态数据 成员,函数,命名空间,枚举,枚举器或模板专业化。
醇>
误导性部分是“非静态数据成员”的明确外观,而在此列表中没有相同级别的对应部分,但在同一列表中还有另外两个感兴趣的元素。
variable
的描述是(基于3 [基本]):
- 变量是由非静态数据成员或者非静态数据成员的引用声明引入的 宾语。变量的名称(如果有)表示引用或对象。
醇>
这意味着说a variable
包含静态数据成员
static member function
是function
(红色汽车是一辆汽车,这是一个合乎逻辑的结论,我似乎没有找到任何指示标准中的计数器)。< / p>
没有任何语法或行为问题特别适用于静态成员,静态函数几乎是命名空间中的自由函数,静态数据成员或多或少是命名空间中的全局变量,你可以弃用自由函数和全局变量..
作为奖励,它实际上适用于主要编译器。
总结所有这些事实基本上意味着[[deprecated]]
属性实际上可以应用于静态数据成员,非静态数据成员和静态成员函数等。
所以为了回答你的问题,根据我的理解,标准实际上允许弃用静态成员。