您引用的这部分比您强调的注释更明确:
友元声明本身不会使名称对非限定查找([basic.lookup.unqual])或限定查找([basic.lookup.qual])可见.
您的定义依赖于限定查找来查找已在命名空间内声明的函数.但是名称对于限定查找是不可见的.该代码应该被拒绝.
这是一个相关规则,见第8.3节[dcl.meaning]
:
当declarator-id被限定时,声明应引用先前声明的限定符所引用的类或命名空间的成员(或者,在命名空间的情况下,引用该命名空间的内联命名空间集的元素)或专业化; 该成员不仅仅是由声明者id的嵌套名称说明符所指定的类或命名空间范围内的using声明引入的.