在函数的参数依赖名称(Koenig)查找
编译器可以使用依赖于参数的名称以查找非限定定义函数调用。 依赖于参数的名称查找也称为 Koenig 外观。 每个参数的类型中的函数调用在命名空间、类、结构、联合或模板中层次结构中定义。 当指定非限定 后缀 时函数调用中,编译器搜索在层次结构的函数定义与每个参数类型。
示例
下面的示例在 Visual C++ .NET 工作 2003 及更高版本,并在 C++ 标准上指定的行为。 在此示例中,编译器请注意,函数 f() 带参数 x。 参数 x 是类型 A::X,在命名空间 A定义。 编译器搜索命名空间 A 并查找采用类型 A::X参数的函数 f() 的定义。
// argument_dependent_name_koenig_lookup_on_functions.cpp
namespace A
{
struct X
{
};
void f(const X&)
{
}
}
int main()
{
// The compiler finds A::f() in namespace A, which is where
// the type of argument x is defined. The type of x is A::X.
A::X x;
f(x);
}