問題タブ [dependent-name]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 従属名の引数依存ルックアップ
テンプレートで使用される従属名の検索は、テンプレート引数が判明するまで延期されます。その時点で [...] ADL は、テンプレート定義コンテキストまたはテンプレート インスタンス化コンテキストのいずれかから見える外部リンケージを持つ関数宣言を調べます。
これとは対照的に、次のコード スニペットは 3 つのコンパイラ (MSVC、clang、gcc) で正常にコンパイルされます。
Foo
は の従属名ですCallFoo
: テンプレート引数 に依存しますT
. ただし、Foo
上記の引用された規則の 2 つに違反しているにもかかわらず、関数はコンパイラによって検出されます。
- の宣言は
Foo
、 の定義またはインスタンス化のどちらからも見えませんCallFoo
。これは、両方の下にあるためです。 Foo
内部リンケージがあります。
3 つのコンパイラすべてにバグがあるとは考えにくいです。私は何かを誤解したかもしれません。これについて詳しく説明していただけますか?