Поделиться через


Поддержка зависимой от аргументов подстановки (подстановки Кёнига)

Обновлен: Ноябрь 2007

В компиляторе Visual C++ теперь полностью реализована подстановка Кёнига.

Дополнительные сведения см. в разделе Argument-Dependent Name (Koenig) Lookup on Functions.

Пример

Код из следующего примера ведет себя по-разному в Visual Studio .NET и в 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
}

in N::X::f
in ::f
in ::f
in N::X::f

См. также

Ссылки

Критические изменения в компиляторе Visual C++