什么是标准名称?

时间:2019-05-23 10:35:52

标签: c++ language-lawyer c++17

据我所知,标准(e.g.中未提及完全合格一词,但我可以回忆起它在网上多次“听到”。

>

人们说一个名字完全合格是什么意思?

这算吗?

A::f()

还是只有这个?

::A::f()

而且,如果它是 标准,我找不到哪个措辞?

2 个答案:

答案 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

因此在此定义中,仅以::开头的名称是完全限定的。