非唯一名称空间限定查找的代码示例
Code example for non-unique namespace-qualified lookup
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和中使用指令指定的所有命名空间Ni它的内联命名空间集。
引用自3.4.3.2/3:
给定X::m(其中X是用户声明的命名空间),或给定::m(其中X是全局命名空间),如果S(X, m)是空集,则程序是不规范的。否则,如果S(X, m)只有一个元素,或者如果引用的上下文是using声明(7.3.3),S(X, m)是如果m的使用是,则使用不允许从S(X, m)中选择唯一声明,
你能举个例子来说明这个规则吗:
如果m的使用不允许唯一声明,则使用从S(X, m)中选择,程序是病态的。
标准草案实际上提供了一个例子,虽然它不是很容易找到,它在3段下,如下所示,给定以下内容:
namespace A {
using namespace Y;
void f(int);
void g(int);
int i;
}
namespace B {
using namespace Z;
void f(char);
int i;
}
namespace AB {
using namespace A;
using namespace B;
void g();
}
示例中包含以下内容:
AB::i++; // i is not declared directly in AB so the rules are
// applied recursively to A and B,
// S is { A::i , B::i } so the use is ambiguous
// and the program is ill-formed
相关文章:
- Printf 命令不打印时添加了查找常见除数的新代码
- 如何使用 lldb 查找我的代码运行的位置
- 用于查找数组中最大元素的出现次数的代码,给出分段错误
- 在代码块中查找输出文件
- 旧C++代码中的目录查找导致 OS X Catalina 10.15 中的目录错误
- 用于查找最低共同祖先的代码不适用于某些测试用例
- 查找在 4 和问题中代码失败的测试用例
- 代码以查找数组中的最大数字,但它仅将第一个数字显示为最大数字. 有人请告诉我为什么
- 如何查找导致结果不一致的代码
- 用于查找连续子数组的最大总和的代码使测试用例失败
- 我正在努力在随机数组中查找最小值,有人知道为什么我的代码不起作用?C++
- 我的代码似乎在查找最大数字时存在语法错误
- 在编写代码以查找数组中的对数时获取分段错误
- 我在代码中收到一个运行时错误,该错误如何通过修改最多一个元素来查找数组是否可以变得不减少
- 通过查找一对项目的代码获取错误的输出,在给定的总和相等的给定列表中列表
- 在C++代码中查找编号函数
- C 功能:读取直到文件结束 - 查找代码中的错误
- 是否可以使用内联汇编在 Visual Studio 2010 c++ 中查找代码的地址?
- 查找代码中的逻辑缺陷或低效率
- 调试__do_global_dtors_aux以查找代码位置