IT用語集 › プログラミング › ADL

ADL

プログラミング Svenska → 更新: 2026-10-20

C++で修飾なしの関数呼び出しを行うとき、コンパイラが実引数の型が属する名前空間も検索するというルール。ケーニッヒ探索とも呼ばれる。

std::cout << xがどのoperator<<かを明示せずに動くのはこのおかげで、単なる珍しい仕様ではなく、言語を支える土台である。これがなければ、名前空間をまたぐ演算子オーバーロードは使い物にならない。using std::swap; swap(a, b);というイディオムも支えており、型独自のバージョンを優先し、なければ標準のものにフォールバックする。ジェネリックコードでのカスタマイゼーションポイントの確立した手法である。欠点は、考えてもいなかった名前空間のオーバーロードまで引き込み、一見無関係なヘッダーを誰かがインクルードしたときに初めて表面化する曖昧さを生みうることだ。C++20のrangesがADLをあえて遮断するカスタマイゼーションポイントオブジェクトを使うのは、そのためである。

← 用語集に戻る