据我所知,标准(e.g.中未提及完全合格一词,但我可以回忆起它在网上多次“听到”。
>人们说一个名字完全合格是什么意思?
这算吗?
A::f()
还是只有这个?
::A::f()
而且,如果它是 标准,我找不到哪个措辞?
答案 0 :(得分:37)
使用范围解析运算符的标识符是根据[expr.prim.id.qual]的限定名称。否则不合格。
该标准并未定义完全合格的含义,但确实在[library] / [requirements] / [organization] / [contents]中进行了提及上面写着(引自标准草案)
每当提及标准库中定义的名称x时,除非另有明确说明,否则假定名称x完全限定为:: std :: x。 例如,如果将库函数F的Effects:元素描述为调用库函数G,则意味着:: std :: G函数。
维基百科定义了Fully qualified name:
在计算机编程中,完全限定名称是一个明确的名称,它指定调用所引用的对象,函数或变量,而与调用的上下文无关。
只有从全局名称空间开始的合格名称是没有上下文的。这是常见用法。
答案 1 :(得分:20)
的确,这不是标准术语。在标准中没有定义。
但是,“完全合格”一词在[内容](撰写本文时,最新的N4800草案为15.5.1.1“图书馆内容”)第3段中仅出现一次:
只要提及标准库中定义的名称
x
,除非另有明确说明,否则假定名称x
完全等于::std::x
。
因此在此定义中,仅以::
开头的名称是完全限定的。