为什么不能在外部名称空间中定义完全限定的函数?我可以知道标准说的是什么吗?

1Us*_*ser 0 c++ namespaces

这是错的吗?为什么?我可以知道标准说的是什么吗?

 namespace N{
  namespace N1{
     namespace N2{
        struct A{
         struct B{
          void fun();
       };//B
     }; //A
   } //n2
 }//n1
 namespace N3{
     void N1::N2::A::B::fun(){} //error
 }//n3
}//n

int main()
 {
  return 0;
 }
Run Code Online (Sandbox Code Playgroud)

我可以知道为什么会失败吗?

Phi*_*ipp 6

由于§9.3/ 2,这是无效的:

出现在类定义之外的成员函数定义应出现在包含类定义的命名空间范围内.

命名空间的范围N3不包含类的定义B