次の方法で共有


関数の引数依存名の参照 (Koenig 参照)

コンパイラは、引数依存の名前検索を使用して、非限定の関数呼び出しの定義を検索できます。 引数依存の名前検索は Koenig 検索とも呼ばれます。 関数呼び出しの各引数の型は、名前空間、クラス、構造体、共用体、またはテンプレートの階層内で定義されます。 非限定の後置関数呼び出しを指定すると、各引数型に関連付けられている階層内で関数定義が検索されます。

このサンプルでは、f() 関数は x 引数を受け取ります。 x 引数は A::X 型であり、これは A 名前空間で定義されています。 コンパイラは A 名前空間を検索し、f() 型の引数を受け取る 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;
   f(x);
}