問題タブ [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.

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

c++ - C ++テンプレートは、特定のタイプに対して関数がオーバーロードされているかどうかを確認できますか?

さまざまな場所でさまざまなタイプにテンプレート化されることを期待しているテンプレート関数があります。
問題は、コンパイル時に、特定のタイプが2つの異なる方法で別のテンプレートを生成するための特殊化があるかどうかを知りたいということです。

ここのように関数の存在をテストできることは知っています。

toboolが専門化されているかどうかをテストする方法についてのチャンスはありますか?

tobool()が特殊化されている場合はtrueを返し、そうでない場合はfalseを返すisbool()を生成したいとします。

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

c++ - クラス テンプレートからのメソッド テンプレートの完全な特殊化

この話題は今ではほとんど時代遅れになっているはずですが、この特定のケースについては苦労しています。

要するに、これが私がやりたいことです:

これは可能ですか?

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

c++ - ポインターまたは参照を使用する場合のテンプレートの特殊化の優先順位

次のような Serializer クラスがあります。

今私の問題は、Serializable インターフェイスを継承するクラスがある場合、それらを Func 2 で処理したい場合でも、常に Func 1 で処理されることです (ポインターまたは参照はどちらも同じように動作します)。次のように明確に指定しない限り、C++ は Serializable インターフェイスが継承されていることを認識しないようです。

もちろん、どこかに追加するのを忘れるとすぐに<Serializable>、プログラムはバグアウトします。これはかなり面倒です。

これを回避する方法はありますか?

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

c++ - テンプレート内のメソッド ポインターを部分的に特殊化する

読み取り専用、書き込み専用、および読み取り書き込みの動作でプロパティを実装しようとしています。テンプレートの特殊化がここに行く方法だと思ったので、これを試しました:

これは機能せず、コンパイラ エラー (VC) が発生します。部分的な特殊化は、依存型の非型テンプレート パラメーターを持つことはできません。

私はここで道に迷っています、これは可能なのですか?

時間をありがとう、リチャード。

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

c++ - 複数の型名に対する部分的なテンプレートの特殊化

次のコードでは、 return をOp持つ関数 (s) をvoidreturn と見なしたいと考えていtrueます。typeRetvalと の戻り値Opは常に一致します。ここに示されている型特性を使用して区別することはできませRetvalん.OpArgs

エラーを発生させずに、テンプレートの特殊化で一部の変数のみを特殊化するにはどうすればよいですか? の戻り値の型に基づいて動作を変更する他の方法はありOpますか?

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

c++ - この部分的なテンプレートの特殊化の何が問題になっていますか?

コードの後半でこれを呼び出します。

このエラーが発生します:

src/cpfs/entry.cpp:1908: エラー: 関数テンプレートの部分的な特殊化 'call_retval_wrapper<bool, Op, Args>' は許可されていません

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

c++ - メンバー列挙型を使用してテンプレートを特殊化することは可能ですか?

使用法:

T::Specialgcc 4.1.2 を使用してコンパイルに失敗します。Foo の部分的な仕様化のための の使用について不平を言います。クラスの場合Special、解決策はその前のタイプ名になります。列挙型 (または整数) に相当するものはありますか?

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

c++ - C++ テンプレートの部分的な特殊化エラー

次のコードでコンパイル エラーが発生します。class Q64 is not a valid type for a template constant parameter

どうしたの?私はgrid_residueクラスに特化しようとしていQ64ます。

アップデート:

構文が変更されました。エラーが発生するようになりましたerror: function template partial specialization 'grid_residue<GRIDD, Q64>' is not allowed

ありがとう

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

c++ - 静的フィールドの初期化のテンプレート部分特殊化

私は次のようなことを試みています:

これを2つのファイル(a.cppとb.cpp)に含めます。私はコンパイルして取得しようとします:

私のC++構文は悪いと思いますが、私が間違っていることを考えることはできません。

template<>複数の変換単位でこれが必要なため、変数定義からを削除できません。これにより、リンクエラーが発生します。

フィールドを基本クラスに入れ、CRTPを使用してタイプごとに新しいインスタンスを作成すると、特殊化が邪魔になりませんが、この「直接」フィールド初期化が機能しないのはなぜですか?構文の一部が欠落している必要があります。

私はVS2003を使用しています:(

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

c++ - 特殊化されたテンプレート クラス関数から特殊化されていないテンプレート クラス関数を呼び出す

特殊化されていないテンプレート クラスで定義された関数を、特殊化されたテンプレート クラスから呼び出すことは可能ですか? これが私が試みているものの例です:

GCC は、特殊化されていないクラス関数を認識できないと不平を言っています。つまり、特殊なクラス内でのみ見えると思います。

何かご意見は?

編集

これは私のコードのより具体的な例です(可能な解決策があります):

他にも toString()、countDigits() などの関数があります。このアプローチを選択したので、型ごとに同じ関数名を使用できます (つまり、toStringU32()、toString32 などは必要ありません)。テンプレートの特殊化を検討しましたが、これが可能だとは思いません。