問題タブ [function-templates-overloading]

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 に答える
80 参照

c++ - C++ 入門書第 5 版。関数テンプレートのオーバーロード

C++ Primerには、関数テンプレートのオーバーロードに関する例があります。

ポインターを指定して debug_rep を呼び出すと、次のようになります。

両方の関数が実行可能なインスタンス化を生成します。

  • debug_rep(const string* &)Tにバインドされたdebug_rep の最初のバージョンのインスタンス化です。string*

  • debug_rep(string*)debug_repTバインドされた の 2 番目のバージョンのインスタンス化です。string*

の 2 番目のバージョンのインスタンス化は、debug_repこの呼び出しと完全に一致します。

最初のバージョンのインスタンス化では、プレーン ポインターを へのポインターに変換する必要がありますconst。通常の関数の一致では、2 番目のテンプレートを優先する必要があり、実際にそれが実行されます。

しかし、文字列へのポインターを宣言すると、const変換は行われず、2 番目のバージョンが常に選択されます。

だから私はそれが本の間違いだと思います.バージョンはポインタを取るかどうかを渡すので、バージョンが好ましいconstと思いTます.std::string const*std::string*

どう思いますか?

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

c++ - C++ 関数テンプレートのオーバーロード: 空のブレース vs 明示的な int

以下に、C++ 関数テンプレートのオーバーロード解決の非常に基本的な例をいくつか示します (実際のコードから最小化)。

ここでは 2 つのケースがあります。最初のケースでは、コンパイラは何か (S など) をデフォルトで初期化し、2 番目のケースでは int を何か (S など) に変換します。

Godbolt での実例

どちらの場合も、特殊化は完全に一致し、部分的な順序付け [temp.deduct.partial] によってプライマリ テンプレートよりも実際に特殊化されているため、特殊化はオーバーロードに勝つと信じています。

しかし、この例のclang 11とgcc 10.2の両方が、2番目のケースではプライマリテンプレートが勝つことに同意しています. このバグは両方のコンパイラにあるのでしょうか、それとも (おそらく) C++ 標準について理解していないのでしょうか?

0 投票する
0 に答える
15 参照

php - 関数PHPを上書きするためにクラスを拡張しようとしています

拡張しようとしているプラ​​グインの親クラスがあります。

拡張する私のコードは次のとおりです。何らかの理由で機能していません....

何か案は?私はこれで完全に途方に暮れています...ああ、私が忘れる前に。include_once を使用して私のコードを含むファイルを呼び出す別のファイルでインスタンス化された親クラスがあります