問題タブ [template-argument-deduction]

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

c++ - SFINAEを理解する

私の知る限り、SFINAE は置換の失敗がコンパイル エラーにはならないことを意味しますが、可能なオーバーロードのリストからプロトタイプを削除するだけです。

私が理解していないこと: なぜこの SFINAE なのか:

しかし、これはそうではありませんか?

私の理解では、根底にあるロジックはここでも同じです。この質問は、この回答へのコメントから生まれました。

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

c++ - double または complex を返すテンプレート関数から

*行列クラスの演算子をオーバーロードする関数テンプレートをいくつか作成しています。doubleタイプとの行列で多くの作業を行いcomplex<double>ます。正しい型を返す単一のテンプレート関数を作成することは可能ですか? 例えば:

V戻り値の型を の自然な結果によって決定したいと思いT*Uます。これは可能ですか?

編集:

私が尋ねたフォローアップの質問には、ここで適用できる追加情報を提供する回答がありました。

0 投票する
3 に答える
260 参照

c++ - 型 T と U が同じ場合、関数テンプレートは型を推定できません

0 投票する
2 に答える
142 参照

c++ - C++ および標準アルゴリズムのテンプレート

「Effective STL」という本を読んでいるときに、著者は a をどのようcopy_ifに記述できるかの例を示しています。これは、標準アルゴリズムには存在しないためです。著者のバージョンは次のとおりです。

今私の質問は、作者がその方法を次のようにどのように使用できるかです:

私の質問は、テンプレートパラメータがcopy_ifで定義されていないのはなぜですか(3が必要なため)、このように

0 投票する
3 に答える
7117 参照

c++ - 空の山括弧を使用したテンプレート関数呼び出し <>

以下のテンプレートの動作と混同しています。ここでは、空の山括弧 (パラメーターなしのテンプレート) で正常にコンパイルされます。これは、構文的に、 template<> が明示的なテンプレートの特殊化をマークするために予約されているためです。

上記の場合、テンプレート パラメータは本当にオプションですか?

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

c++11 - P が参照型でない場合: A が参照型の場合、A の型の参照修飾子は型推定で無視されます。

私はテンプレートの引数の推論について学んでいます。 < 14.8.2.1 Deducing template arguments from a function call >(C++11 draft) を何度も読みましたが、ルールを逃したと思います:
If P is not a reference type: A が参照型の場合、型推定では A の型の参照修飾子は無視されます。


それは私のせいに違いないのですが、それがどこにあるのかわかりません。

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

c++ - テンプレート テンプレート パラメーターは、新しい C++ 標準でサポートされている関数に対してサポートされていますか?

本 C++ Template: The complete Guide で次のステートメントを見つけました。

関数テンプレートのテンプレート テンプレート パラメーターは使用できません。

しかし、彼は次のコードをコンパイルして実行します。

これは、新しい C++ 標準が関数のテンプレート テンプレート パラメーターをサポートするということですか? 次の投稿の答えは別のことを言っています: How to get template template argument deduction working with functions?

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

c++ - std::basic_string でテンプレート引数を推測できませんでした

私の問題のストライプ化されたバージョン:

これら2つの機能をマージしたい:

..1 つのテンプレート化された関数に:

Fooとのよう(1)に呼び出せると思っていたのです(2)が、驚いたことにうまくいきませんでし(3)た。

constパラメータの修飾子を削除してs、参照( )を削除するか、の代わりに で&呼び出してみましたが、すべて同じ結果になりました。lvaluesrvalues

コンパイラ (gcc と VS の両方 - したがって、標準に準拠した動作であると確信しています) は、 のテンプレート引数を推測できませんFoo。もちろん、のように呼び出しても機能しFooますFoo<char>(...)

(3)したがって、特に呼び出しは、呼び出し元のパラメーター オブジェクトの型と関数の引数の型の間で 1 対 1 の型であるため、これがなぜなのかを理解したいと思います。

第二に、これに対する回避策が必要です: 1 つのテンプレート化された関数を使用できるようにし、それを および のように呼び出すことができるようにし(1)ます(2)

編集

(2)そして(3)仕事をする。私はコンパイラで間違っていると宣言していました(私の質問とは異なります):

申し訳ありません。

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

c++ - マクロ __STL_FUNCTION_TMPL_PARTIAL_ORDER が std_pair.h でテンプレート関数を囲む必要があるのはなぜですか?

今日、stl_pair.h に次のコードが表示されます。

テンプレート関数が関数テンプレートの部分的な特殊化と関連しているとは思いません。私が間違っている ?