C++ C++;命名空间外定义

C++ C++;命名空间外定义,c++,namespaces,name-lookup,C++,Namespaces,Name Lookup,现场有以下段落: 命名空间外定义和重新声明仅允许在声明点之后,仅在命名空间范围内,并且仅在包含原始命名空间(包括全局命名空间)的命名空间中[,并且它们必须使用限定id语法(自C++14以来)] 我使用[]来界定(自C++14以来)构造所指的部分 我的问题是,如果C++14之前的命名空间定义不必使用限定id语法,那么它们是如何定义的 我查看了C++11标准草案,发现如下内容: 命名命名空间的成员也可以通过显式限定(3.4.3.2) 要定义的名称的名称,前提是要定义的实体已在命名空间中声明 并且定义

现场有以下段落:

命名空间外定义和重新声明仅允许在声明点之后,仅在命名空间范围内,并且仅在包含原始命名空间(包括全局命名空间)的命名空间中[,并且它们必须使用限定id语法(自C++14以来)]

我使用[]来界定
(自C++14以来)
构造所指的部分

我的问题是,如果C++14之前的命名空间定义不必使用
限定id语法
,那么它们是如何定义的

我查看了C++11标准草案,发现如下内容:

命名命名空间的成员也可以通过显式限定(3.4.3.2) 要定义的名称的名称,前提是要定义的实体已在命名空间中声明 并且定义出现在包含声明的名称空间中的声明点之后 命名空间。[……]

限定id语法
明确限定
之间是否有区别


谢谢。

Cppreference只是显示了一个(可能不正确的)可能相关的外观摘要。(如CPPNearner所述,与1838年有关^)谢谢你们两位的回答。因此,他们明确表示,必须
使用限定id语法
,这样就不允许使用
使用
+
非限定名称定义的组合来进行此类定义。此外,缺陷1838的解决方案还解决了缺陷1021。
名称空间mine{void f();}void mine::f(){/*whatever*/}