【发布时间】:2014-08-07 17:27:12
【问题描述】:
S(X,m) 的定义如下。 3.4.3.2/2:
对于命名空间 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 和 它的内联命名空间集。
来自 3.4.3.2/3 的引述:
给定 X::m(其中 X 是用户声明的命名空间),或给定 ::m(其中 X 是全局命名空间),如果 S(X, m) 是空集,则程序 格式不正确。否则,如果 S(X, m) 只有一个成员,或者如果 引用的上下文是一个使用声明(7.3.3),S(X,m)是 m 所需的一组声明。否则如果使用 m 是 不是一个允许从 S(X, m) 中选择唯一声明的声明, 程序格式不正确。
你能举个例子来说明这个规则吗:
如果 m 的使用不允许唯一声明 从 S(X, m) 中选择,程序是非良构的。
【问题讨论】:
-
我的回答有意义吗?有什么问题吗?
-
@ShafikYaghmour 是的,我有一个问题。请查看对您帖子的评论。
标签: c++ namespaces language-lawyer