問題タブ [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.

0 投票する
1 に答える
148 参照

c++ - 従属名の引数依存ルックアップ

cppreference.com のこの説明は、

テンプレートで使用される従属名の検索は、テンプレート引数が判明するまで延期されます。その時点で [...] ADL は、テンプレート定義コンテキストまたはテンプレート インスタンス化コンテキストのいずれかから見える外部リンケージを持つ関数宣言を調べます。

これとは対照的に、次のコード スニペットは 3 つのコンパイラ (MSVC、clang、gcc) で正常にコンパイルされます。

Fooは の従属名ですCallFoo: テンプレート引数 に依存しますT. ただし、Foo上記の引用された規則の 2 つに違反しているにもかかわらず、関数はコンパイラによって検出されます。

  • の宣言はFoo、 の定義またはインスタンス化のどちらからも見えませんCallFoo。これは、両方の下にあるためです。
  • Foo内部リンケージがあります。

3 つのコンパイラすべてにバグがあるとは考えにくいです。私は何かを誤解したかもしれません。これについて詳しく説明していただけますか?