什么是标准名称?

Lig*_*ica 43 c++ language-lawyer c++17

据我所知,标准中没有提及“ 完全合格 ”一词(例如),但我可以记得在网上多次“听到”它。

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

这算吗?

A::f()
Run Code Online (Sandbox Code Playgroud)

还是只有这个?

::A::f()
Run Code Online (Sandbox Code Playgroud)

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

eer*_*ika 45

根据[expr.prim.id.qual],使用范围解析运算符的标识符是限定名称。否则不合格。

该标准并未定义完全限定的含义,但确实在[library] / [requirements] / [organization] / [contents] 提及了该标准(引自标准草案)

每当提及标准库中定义的名称x时,除非另有明确说明,否则假定名称x完全限定为:: std :: x。例如,如果将库函数F的Effects:元素描述为调用库函数G,则意味着:: std :: G函数。

维基百科定义了全限定名

在计算机编程中,完全限定名称是一个明确的名称,它指定调用所引用的对象,函数或变量,而与调用的上下文无关

只有从全局名称空间开始的合格名称是没有上下文的。这是常见用法。


Seb*_*edl 23

确实,这不是一个标准术语。在标准中没有定义。

但是,“完全合格”一词在[内容](撰写本文时最新的N4800草案中的15.5.1.1“图书馆内容”)中仅出现一次:

每当x提及标准库中定义的名称时,除非另有明确说明,否则x假定该名称完全限定为::std::x

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