実引数依存の名前探索
ADLでは、探索される名前空間は実引数に依存する。A型のオブジェクトが関数呼出の際に実引数として用いられると、Aに関連する名前空間(Aが含まれる名前空間とAの基底クラスが含まれる名前空間の和集合)からその関数が探索される。 探索の後、見つかった宣言の集合の中から多重定義の解決が行われる。 以下に例を示す。
標準C++ライブラリでは、ADLを主に演算子多重定義関数に対して用いている。たとえば次のプログラムはADLが無ければコンパイルできない。
std::ostream& std::operator <<(std::ostream&, const std::string&)と宣言された関数は、ADLによって見付かる(この関数はstd名前空間の中に存在することに注目)。ところで、std::endlは関数であるが、operator <<の引数として用いられているため、std::などといった完全な修飾が必要であることに注意。