関数テンプレートが ADL 検出に抵抗する理由
C では、引数依存検索 (ADL) により、コンパイラは明示的な名前空間修飾なしで関数を見つけることができます。ただし、関数テンプレートに関しては、ADL は制限に直面します。
この核心は、C 標準 03 の 14.8.1.6 に記載されています:
"しかし、関数テンプレートに明示的なテンプレート引数が指定されている場合、が使用されている場合、呼び出しの時点でその名前の関数テンプレートが表示されていない限り、呼び出しは正しい構文形式を持ちません。 call."
例で詳しく見てみましょう:
次のスニペットでは、名前空間 ns:
namespace ns { struct foo {}; template<int i> void frob(foo const&) {} void non_template(foo const&) {} }
以上が引数依存検索 (ADL) が明示的な名前空間修飾なしで関数テンプレートを検索しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。