問題タブ [template-specialization]
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++ - テンプレートの特殊化とテンプレートテンプレートのパラメータに関する問題
私はクラスを持っていますHelper
:
別のクラステンプレートがあります。これは、テンプレートテンプレートパラメータとして自分自身を渡しているときExposure
に継承します。私も専門にする必要があります。したがって、私は次のようなものを書きたいと思います。Helper
E
Exposure
残念ながら、これはコンパイルされません。gccは文句を言う:
Exposure.h:170:エラー: `'template> class ExposureHelper'</p>のテンプレートパラメータリストの引数2でタイプ/値が一致しません
Exposure.h:170:エラー:タイプ''の定数が必要で、'Exposure'を取得しました</p>
私は何か間違ったことをしていますか?私がやろうとしていることの回避策はありますか?
c++ - Out of class constructor definition for a specialized class template
I am trying to define a constructor for an explicitly specialized class template outside the class definition, as so:
But it seems to be an error. Comeau says: error: "x<int>::x()" is not an entity that can be explicitly specialized
, even though the complete class is what being specialized.
What's the issue here?
c++ - C++ で特殊化するときに、特殊化されていないバージョンの関数を呼び出しますか?
テンプレート化されたクラスがあるとします:
do_something を特殊化したいが、その中で「通常の」 do_something 関数を呼び出したい:
特殊な関数内で do_something の通常バージョンを参照する方法はありますか? それとも、コードをコピーする必要がありますか?
(この正確な問題が発生しないように foo をリファクタリングできることはわかっていますが、「実際の」foo は頻繁に共有されるコードであるため、実際には変更できません。)
c++ - デストラクタ用のテンプレートの特殊化
文字列キーとint、bool、文字列、またはさまざまなタイプのポインタを値として持つことができるハッシュマップクラスを構築しており、それを機能させたいと考えています。使用しているプログラムでは、ポインターを作成してハッシュマップに渡します。マップを破壊する必要があるときに問題が発生します。ハッシュマップのタイプがポインターの場合、コンテナーを削除する前に、ハッシュマップ(値)を削除する必要があります。
したがって、現在のコードは次のようになります。hashNode**ドロワーがあり、これを2次元配列として使用してマップ内のhashNodesへのポインターを保持します。これらの同じポインターは、別のhashNode **配列にも保持され、マップに追加されるときにそれらを格納します(ハッシュマップの拡張とコピーを容易/高速化するため)。
その後、次のようなメソッドがたくさんあります。通常の値用のメソッド:
1つはポインタ用です。
すべてのメモリが正しく処理されるように、str_mapクラスのインスタンスを正しく分解する別のより良い方法はありますか?または、少なくともこれを機能させる方法はありますか?
c++ - テンプレート クラスのテンプレート コンストラクターの特殊化
1日14時間労働が数週間続いたせいで、私の脳は溶けてしまった。
テンプレート クラスがあり、このクラスのテンプレート変換コンストラクターを作成し、そのコンストラクターを特殊化しようとしています。コンパイラ (MSVC9) にはかなり不満があります。これは、私が書こうとしている実際のコードの最小限の例です。コンパイラ エラーはコードとインラインです。
私の脳を溶かすのを手伝ってください。私がやろうとしていることをするためにここで必要な構文は何ですか? 注: 私の実際のコードでは、convert コンストラクターを宣言の外で定義する必要があるため、これはオプションではありません。
c++ - 1つのタイプのみのテンプレートクラスメンバー関数に特化
私はたくさんの関数を持っているが本質的にベクトルクラスであるテンプレートクラスを持っています。bool型だけに1つの関数を追加したいと思います。
リフレクトクラスの特殊なケースに関数を追加したいのですがvector<ar_index> reflected<bool>::which()
、それが理にかなっている唯一のケースです。これを行うための最良の方法は何ですか。コンパイラは、which()をreflectedに追加して、bool用に定義することだけを好まないようです。
c++ - サブクラス(c++)でテンプレートメソッドを特殊化するには?
サブクラスで非テンプレート クラスのテンプレート メソッドを特殊化しようとしています。
// .h ファイル
// .cpp ファイル
しかし、私はエラーを受け取ります:
MyWriter クラスを拡張してユーザー定義クラスをサポートするにはどうすればよいですか?
c++ - 関数専用テンプレートの問題
テンプレートは初めてです。関数テンプレート専用のテンプレートを定義しようとしましたが、コンパイラがエラーを返します。これは単純なmax関数であり、テンプレートを練習するためだけに作成されています。コードは次のとおりです。
および特殊機能:
std :: stringまたは自分で定義したクラスを含む他のタイプの特殊化を書き込もうとしても、エラーは常に同じです。
"エラーC2912:明示的な特殊化;'std :: string maximum(std :: string、std :: string)'は関数テンプレートの特殊化ではありません..."
IntelliSenseの提案:「関数テンプレートのインスタンスはありません」
これをコンパイルして正しく動作させるには、何を変更する必要がありますか?
前もって感謝します
c++ - テンプレート機能の特殊化に関する説明
電卓を作りたい
ここで、このCaculatorに文字列を追加させたいので、add( "Tim"、 "Joe")は"TimJoe"を取得します。
既存のクラスに必要な変更を加えることでこれを実現するために、テンプレート関数の特殊化を使用できますか?
c++ - 特定の条件が満たされたときにC++テンプレートクラスメソッドのインスタンス化を防ぐ方法は?
私は現在、次のシグネチャを持つ汎用ベクトルテンプレートクラス(コンテナではなく幾何学的エンティティ)を作成しています...
...ここで、Tは算術型、Nは次元です。クロス積を演算子^(クラス定義内にある)のオーバーロードとして定義し、N==3の場合にのみ有効にします。
残念ながら、このテンプレートをN!= 3でインスタンス化すると、演算子^が参照されていなくても、次のエラーが発生します。
私は何が間違っているのですか?そのような場合、boost :: enable_ifに代わるものはありますか?
どうもありがとうございます。