問題タブ [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.
c++ - クラス テンプレートを関数の引数として使用するには?
次の行に沿って宣言されたクラスがあります
そして、次のような関数の引数として使用したい:
しかし、コンパイルすると、「クラス テンプレートの使用にはテンプレート引数リストが必要です」と表示されます。私は試した
しかし、同じエラーが発生します。どうすればこれを修正できますか?
c++ - メンバー関数ポインターを使用したテンプレート メタプログラミング?
テンプレートのメタプログラミングでメンバー関数ポインターを使用することは可能ですか? そのような:
確かに、これはかなり不自然ですが、可能ですか? (はい、おそらくもっと良い方法がありますが、私を笑わせてください。)
c# - C#のテンプレート関数-リターンタイプ?
c#はテンプレートのようなc++をサポートしていないようです。例えば
関数にパラメーターに基づいたリターンタイプを持たせたいのですが、C#でこれを実現するにはどうすればよいですか?C#でテンプレートを使用する方法
編集:ほぼ同じ目的でobjectとgetTypeを使用できますか?
c++ - STL コンテナー クラスの Java の Collection インターフェイスに相当する C++ はありますか?
関数の引数として任意のコンテナーを渡し、それを反復処理したいと思います (要素を消去したりプッシュしたりしません)。残念ながら、これを行う標準的な方法はないようです。
私の頭に浮かぶ最初の解決策は、CollectionInterface
STLコンテナをラップするクラスによって実装されるインターフェース(と呼びましょう)です。したがって、関数宣言は次のようになります。
または、コンパイル時にバインドし続けるという利点があるメソッド テンプレートについて考えていました。
どちらの方法が良いと思いますか?
c++ - テンプレート関数のエラー(Boost.Tuplesを使用)
このテンプレート関数を使用してライブラリを取得しています。Gcc 4.1.2(codepad.org)は次のエラーを報告します:
テンプレートの経験が豊富な人がアドバイスを提供できますか?自分自身を研究するための問題またはキーフレーズのどちらか?これは私を立ち往生させています。
c++ - 関数テンプレート - 明示的な特殊化とグローバル関数 (C++)
関数テンプレートは、関数を移植可能にし、任意のデータ型で使用できるようにするために使用されることを知っています。
また、特定のデータ型のより効率的な実装がある場合は、テンプレートの明示的な特殊化が行われます。
しかし、明示的な特殊化の代わりに、から呼び出すことができる非テンプレート関数をコーディングすることもできますmain
。これにより、コンパイラは非テンプレート関数を明示的に特殊化されたテンプレート化関数よりも速く見つけることができるため、処理時間を節約できます。これにより、効率が向上します。
では、非テンプレート関数を呼び出すだけの代替手段があるのに、なぜ明示的な特殊化を使用するのでしょうか?
間違っていたら訂正してください!
編集 1:
教授から、関数テンプレートを作成して関数を呼び出すときはいつでもmain
、コンパイラは最初にテンプレート化された関数を探し、それを見つけることができない場合は関数テンプレートを検索し、そこから順番に関数テンプレートを検索すると言われました。テンプレート化された関数を作成し、それを呼び出します。
c++ - 関数テンプレートの論理エラー
私の教授は私にこの任務を与えてくれました。
Maxと呼ばれるジェネリック関数を実装します。これはジェネリック型の3つの引数を取り、これらの3つから最大値を返します。char*型に特化した関数を実装します。
これが私のコードです:
出力:
10、20、30で最大は30
A、B、Cで最大はCで
最大A、B、CはAで最大
問題 :
Max関数A、B、Cでcharデータ型を渡すと、Cが返されますが、文字列データ型A、B、Cを渡すと、Aが返されます。
なぜここにAが返されるのですか?
c++ - テンプレート化された関数..エラー:template-idがどのテンプレート宣言とも一致しません
関数テンプレートと、 3つの引数を取り、それらの中で最大のものを計算して出力する、明示的に特殊化されたテンプレート関数を作成しました。
テンプレートが正常に機能するのに対し、特殊な関数がエラーを引き起こしています。しかし、 char*型で作業したいと思います。
これは私が得るエラーです=>
error: template-id ‘Max<>’ for ‘void Max(char, char, char)’ does not match any template declaration
以下は私のコードです:
c++ - 関数テンプレートの型の決定
関数テンプレートについてアドバイスをお願いします。いくつかのデータをバッファに追加する関数があります。ただし、データ型に関する情報をバッファーに追加する必要もあります。データの型は次の列挙型です。
そして、次のような関数から関数テンプレートを作成する必要があります:
パラメータのタイプに応じて、appendType() の ParameterType から値を渡す方法を教えてください。
いくつかのマクロでそれをやろうとしましたが、成功しませんでした。アドバイスをありがとうございました。
c++ - メンバー関数テンプレートを配置する場所
定期的に私を苛立たせるC++の側面は、テンプレートがヘッダーファイル(従来はインターフェイスを記述している)と実装(.cpp)ファイルの間のどこに収まるかを決定することです。多くの場合、テンプレートはヘッダーに含める必要があり、実装を公開し、以前は.cppファイルに含める必要があった余分なヘッダーをプルすることもあります。最近、この問題が再び発生しました。その簡単な例を以下に示します。
実際のクラスを基本クラス、つまり仮想デストラクタとして使用するつもりであることに注意してください。それが重要かどうかは疑わしいですが、念のためカウンターに置いておきました。上記の結果の出力は次のとおりです。
Counter
これで、のクラス宣言はすべてヘッダーファイル(例:counter.h)に入れることができます。iostreamを必要とするdtorの実装をcounter.cppに入れることができます。countAndPrint()
しかし、iostreamも使用するメンバー関数テンプレートをどうすればよいでしょうか。コンパイルされたcounter.oの外部でインスタンス化する必要があるため、counter.cppでは使用できません。しかし、counter.hに入れるということは、counter.hを含むすべてのものにiostreamも含まれることを意味します。これは、間違っているように見えます(そして、私はこの嫌悪感を乗り越えなければならないかもしれないことを受け入れます)。テンプレートコードを別のファイル(counter.t?)に入れることもできますが、それはコードの他のユーザーにとっては少し意外なことです。Lakosは、私が望むほど実際にはこれに触れていません。C++ FAQベストプラクティスにはなりません。だから私が求めているのは:
- コードを私が提案したものに分割するための代替手段はありますか?
- 実際には、何が最も効果的ですか?