問題タブ [function-templates]

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

c++ - パラメータパックの各要素を変更し、それらからタプルを作成する方法は?

可変引数関数テンプレートで問題が発生しています。パラメーター パックの各要素を調べ、要素をパッケージ化し、パッケージ化されたすべての要素をタプルに詰め込んで返す必要があります。これが私がやりたいことの一般的な考え方です(戻り値の型は単なるプレースホルダーであり、どうなるかわかりません):

何か案は?

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

c++ - ユニバーサルクラスメソッドの作り方は?

クラス テンプレート関数を作成する方法はありますか?

たとえば

または、それらの線に沿った何か。

課題だけではありません、コメントします。

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

c++ - Stroustrup の本が、当時は許可されていなかったデフォルトの関数テンプレート引数を示しているのはなぜですか?

C++ Programming Languageの第 3 版の第 13 章で、Stroustrup が関数テンプレートのデフォルト パラメータを示している理由を説明できますか? これは、セクション 13.4.1 で Stroustrup が示した例です。

呼び出しごとに比較を明示的に指定するのは面倒です。幸いなことに、一般的でない比較基準のみを明示的に指定する必要があるように、デフォルトを選択するのは簡単です。これは、オーバーロードによって実装できます。

または、デフォルトのテンプレート引数として通常の規則を指定できます。

これはコンパイラエラーです:

エラー: デフォルトのテンプレート引数は関数テンプレートで使用できない可能性があります

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

c++ - 関数テンプレートの仕様

クラスTが特別な基本クラスT_baseの派生クラスのみに制限される関数テンプレートを作成したいと思います。これを達成するための効率的な方法は何ですか?ご協力いただきありがとうございます!

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

c++ - 関数テンプレートのリンク エラー

任意のデータ型のデータを取得できる関数テンプレートを作成しましたが、コンパイル時にエラー メッセージが表示されます。

関数は次のように宣言されます。

そして次のように呼ばれます:

couponList[cpnCnt].discountダブルです。

コード自体は「内部」ディレクトリで正常にコンパイルされますが、「外部」ディレクトリで上記のエラー メッセージが表示されます。後者は本質的に内部コードのラッパーです。

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

c++ - C++ テンプレート関数のラッピング

GNU のリンカーラップオプションを使用して、テンプレート関数をラップしようとしています。コードは次のようになります。

上記のコードは、次のコマンドにリンクされています。

残念ながら、これは機能せず、ラップされたバージョン__wrap__Z1fIiEvT_の代わりに常に元の関数fが呼び出されます。私が犯した間違いはありますか?

編集: アドバイスどおり、ここにnmの出力を追加して、テンプレート関数のマングル名に誤りがないことを確認します。

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

c++ - 関数テンプレートの特殊化に失敗しましたか?

#1と#2の違いは何ですか。TEST を定義すると、#1 が機能します。しかし、私がコメントすると、#3の作業...そして、関数テンプレートの特殊化を書く正しい方法は...

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

c++ - 2 つの関数のアドレスが同じなのはなぜですか?

次の関数テンプレートを検討してください。

ここで、 と のアドレスを次のように出力f<A>f<B>ます。

MSVS10 でコンパイルした場合、同じアドレスが表示されるのはなぜですか? それらは 2 つの異なる機能ではないため、異なるアドレスを出力する必要がありますか?

更新しました:

ideone では、別のアドレスが出力されることに気付きました。関数はまったく依存しないため、MSVS10 はコードを最適化し、T同じ関数を生成します。これに関する@Markの回答とコメントは貴重です。:-)

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

c++ - フレンド関数テンプレートのクラス内定義の場合の再定義エラーを回避するには?

次のコードを検討してください。

現在は正常にコンパイルされています ( ideone )。しかし、 の定義のコメントを外すBと、次のエラー ( ideone )が発生します。

このエラーが発生する理由を知っています(まあ、知っていると思います)。

だから私の質問は:

フレンド関数テンプレートのクラス内定義の場合の再定義エラーを回避するには?

クラス内でプライマリ テンプレート(特殊化ではない)の定義を提供する限り、このエラーが発生します。この方法でプライマリ テンプレートを定義することには、別の問題もあります。クラス テンプレートのすべてのインスタンス化のf関数テンプレートfriendのすべてのインスタンス化をBase行うことです。これも避けたいと思います。ifとare not sameのf<T>友達になりたいのですBase<T>が、友達ではありません。同時に、クラス内での定義も提供したいと考えています。出来ますか?f<U>Base<T>UT

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

c++ - g ++では正常にコンパイルされた関数テンプレートに関する同じコードブロックですが、VC6ではエラーが発生します。なぜですか?

C ++ Primer 3rd Editionの「関数テンプレート」の章を読んでいます。例に従おうとすると、VC6でのコンパイル中に本でエラーが発生したのとほぼ同じコードが見つかりましたが、g++ではすべて問題ありません。どうしてか分かりません?

コードは次のとおりです。

下で発生したエラーは次のVC6ように表示されます。