我想了解命名空间限定名查找规则。我正在尝试在示例中执行此操作:
namespace A
{
int a=::b; //error: ‘::b’ has not been declared
}
int b=6;
我的推理中有一个引用(3.4.3.2/2 N3797):
对于命名空间 X 和名称 m,命名空间限定查找集 S(X, m) 定义如下: 令 S (X, m) 是 X中所有 m 声明的集合和 X 的内联命名空间集 ( 7.3.1)。若S(X,m)不为空,则S(X,m)为S(X,m);否则,S(X, m) 是 S(Ni , m) 的并集,用于通过 X 中的 using 指令指定的所有命名空间 Ni 及其内联命名空间集。
让我们X
成为一个全局范围。我们有那个S(X,b)={int b=6}
。这意味着名称查找必须成功。但实际上,该程序是格式错误的。我可能没有正确理解这条规则吗?