我一直认为在名称空间中调用函数需要使用using声明或完全限定名称。
但是,这段代码编译得很好。似乎命名空间中的参数具有魔力。任何人都可以解释为什么这个例外来自规则吗?
#include <iostream>
namespace A {
class B {};
void f(const B&)
{
std::cout << "f\n";
}
} // A
int main(int argc, char* argv[])
{
A::B b;
f(b);
return 0;
}