Argument Dependent (Koenig) Lookup Now SupportedĀ
Koenig lookup is now fully implemented in the Visual C++ compiler.
For more information, see Argument Dependent Name (AKA Koenig) Lookup on Functions.
Example
The following sample behaves differently at run time in Visual Studio .NET than it does in Visual Studio .NET 2003
// bc_argument_dependent_AKA_Koenig_lookup_now_supported.cpp
// compile with: /W1
#include <stdio.h>
namespace N {
class X {};
void f(X *pX) {
printf_s("in N::X::f\n");
}; // called if compiled with 7.1
}
void f(void *pv) {
printf_s("in ::f\n");
}; // called if compiled with 7.0
int main() {
N::X *pX = 0;
f(pX);
// The following lines will result in the same behavior
// in Visual Studio .NET or Visual Studio .NET 2003
f((void*)pX); // Cast pX to void before calling f; calls global f
::f(pX); // Explicitly specify global f
N::f(pX); // Explicitly specify f in namespace
}
Output
in N::X::f in ::f in ::f in N::X::f