gpt4 book ai didi

c++ - 根据标准委员会的说法,为什么匿名命名空间不足以替代命名空间静态?

转载 作者:IT老高 更新时间:2023-10-28 13:58:17 25 4
gpt4 key购买 nike

根据this answer , 命名空间范围的静态变量在 C++11 中未被弃用。也就是说,它们在 C++03 中已被弃用,因为匿名命名空间被认为更好。但是 C++11 不推荐使用它们。

为什么? N3296 lists the reasoning for this如:

The use of static in namespace scope should not be deprecated. Anonymous namespaces are not a sufficient replacement for the functionality.

这显然被委员会接受了。为什么?没有完全取代这个功能的匿名命名空间是什么?

我更喜欢有标准委员会讨论的文档或书面记录的答案。

最佳答案

This is a more in-depth explanation.

Although 7.3.1.1 [namespace.unnamed] states that the use of the static keyword for declaring variables in namespace scope is deprecated because the unnamed namespace provides a superior alternative, it is unlikely that the feature will be removed at any point in the foreseeable future, especially in light of C compatibility concerns. The Committee should consider removing the deprecation.

我知道的一个问题是匿名命名空间不能专门化命名空间 block 之外的模板。这就是引入 inline namespace 的原因,尽管 static 也可以。此外,static 与宏配合得很好。

关于c++ - 根据标准委员会的说法,为什么匿名命名空间不足以替代命名空间静态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8460327/

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