Export (0) Print
Expand All
2 out of 2 rated this helpful - Rate this topic

Argument-Dependent Name (Koenig) Lookup on Functions

The compiler can use argument-dependent name lookup to find the definition of an unqualified function call. Argument-dependent name lookup is also called Koenig lookup. The type of every argument in a function call is defined within a hierarchy of namespaces, classes, structures, unions, or templates. When you specify an unqualified postfix function call, the compiler searches for the function definition in the hierarchy associated with each argument type.


The following sample works in Visual C++ .NET 2003 and later, and behaves as specified in the C++ standard. For a more comprehensive example, see Argument-Dependent (Koenig) Lookup Now Supported. In the sample, the compiler notes that function f() takes an argument x. Argument x is of type A::X, which is defined in namespace A. The compiler searches namespace A and finds a definition for function f() that takes an argument of type A::X.

// 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;

See Also

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

© 2014 Microsoft. All rights reserved.