gpt4 book ai didi

c++ - 在查找 namespace 名称期间可以考虑哪些其他名称,而不是 namespace 名称?

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

§3.4.6/1:

In a using-directive or namespace-alias-definition, during the lookup for a namespace-name or for a name in a nested-name-specifier only namespace names are considered.

基本上,我要问的是:“为什么这一段是必要的?”

最佳答案

Defect report 373: Lookup on namespace qualified name in using-directive举例说明为什么措辞很重要:

namespace X {
namespace Y {
struct X {
void f()
{
using namespace X::Y;
namespace Z = X::Y;
}
};
}
}

using namespace X::Y 结构或命名空间中引用了哪个 X?如果 3.4.6 中没有这样的措辞,就会产生歧义。

这实际上导致了措辞的变化:

When looking up a namespace-name in a using-directive or namespace-alias-definition, only namespace names are considered.

我们今天所拥有的,因为原始措辞没有涵盖嵌套名称说明符

歧义在于 nested-name-specifier 如果我们查看 draft C++11 standard 5.1.1 General 部分的语法如下:

nested-name-specifier:
::opt type-name ::
::opt namespace-name ::
decltype-specifier ::
nested-name-specifier identifier ::
nested-name-specifier templateopt simple-template-id ::

以及以下我不会复制的段落,因为它们很大,不会将nested-name-specifier 限制为 namespace

据我所知,7.3.1 命名空间定义 充分限制了 namespace-name 以防止歧义。

关于c++ - 在查找 namespace 名称期间可以考虑哪些其他名称,而不是 namespace 名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26058966/

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