namespace NS {
class T { };
void f(T);
void g(T, int);
}
NS::T parm;
void g(NS::T, float);
int main() {
f(parm); // OK: calls NS::f
extern void g(NS::T, float);
g(parm, 1); // OK: calls g(NS::T, float)
}
对于调用g(parm, 1)
,我们在集合X中具有全局范围内的声明void g(NS::T, float);
。AFAICT,我们在集合Yvoid g(T, int);
中也有namespace中的声明,这是 typeNS
参数的关联命名空间。因此,如果我没记错的话,这两个声明是重载解决方案的候选者。那么,与命名空间中的声明相比,全局范围内的声明是否更受欢迎?为什么?我非常感谢标准的引用作为答案。parm
NS::T
NS