gpt4 book ai didi

c++ - 在 C++11 中弃用静态类成员

转载 作者:太空狗 更新时间:2023-10-29 20:21:43 25 4
gpt4 key购买 nike

我遇到过不同的宏,它们允许弃用成员属性和函数,但没有一个讨论弃用静态类成员的可能性。

我读到即使在 C++14 中,静态成员的弃用也是 not allowed .

这有什么具体原因吗?

最佳答案

让我们了解一些事实:

[[deprecated]] 属性的措辞如下(基于 N4269 7.6.5 [dcl.attr.deprecated],强调我的):

  1. The attribute may be applied to the declaration of a class, a typedef-name, a variable, a non-static data member, a function, a namespace, an enumeration, an enumerator, or a template specialization.

误导性部分是“非静态数据成员”的显式出现,但在此列表的同一级别没有其对应项,但在同一列表中还有其他两个有趣的元素。

  • 变量的描述是(基于 3 [basic]):
  1. A variable is introduced by the declaration of a reference other than a non-static data member or of an object. The variable’s name, if any, denotes the reference or object.

这意味着说一个变量包含静态数据成员

  • static member function 是一个function(红色汽车是汽车,这是合乎逻辑的结论,我似乎没有找到任何反例在标准中指出这一点)。

  • 没有任何语法或行为问题特别适用于静态成员,静态函数几乎是命名空间中的自由函数,而静态数据成员或多或少是命名空间中的全局变量,您可以弃用自由函数和全局变量..

  • 作为奖励,它实际上适用于主要编译器。


总结所有这些事实基本上意味着 [[deprecated]] 属性实际上可以应用于静态数据成员、非静态数据成员和静态成员函数等.

所以为了回答您的问题,根据我的理解,标准实际上允许弃用静态成员。

关于c++ - 在 C++11 中弃用静态类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41760241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com