問題タブ [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 投票する
1 に答える
1479 参照

c++ - C ++部分特殊化(関数ポインター)

以下が合法的なC++であるかどうか、誰か教えてもらえますか?

//部分的な特殊化

g ++(4.2.4)エラー:定数式エラーに関数呼び出しを表示できません:テンプレート引数2が無効です

明示的な特殊化には機能しますが

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

c++ - 2 つまたは 1 つのテンプレート パラメーターを持つ同じクラス

通常の 1 つに対して 2 つのパラメーターを取るテンプレートの特殊化を行うにはどうすればよいですか? 私はポインタークラスを構築していましたが、配列を作成するために拡張することを考えましたが、次のようなことを試してみると:

エラーが発生します。テンプレート... 1 つのパラメーターで再宣言されました。

pointer<mama,10>size() と operator[] があるのに対しpointer<mama>、そうではなく、operator-> と * があるため、特殊化する必要があります。

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

haskell - ghc を使用した型クラスの特殊化

genOut/String を起動するにはどうすればよいですか?



コンパイルしてリンクします。


結果:


期待される:


そのルールを実行するにはどうすればよいですか?

0 投票する
6 に答える
15347 参照

c++ - c++のクラステンプレート内のテンプレートクラス

ここのnoobはまだテンプレートを試しています。メッセージ処理クラステンプレートを作成しようとしています

すべてヘッダーファイルで定義されています。クラスを作成してテストしましたが、すべて順調です。今、私はこれをやろうとしています:

ただし、この行では、「>」トークンの前に式タイプが正しくないというエラーが表示されます。

MessageTypeとは何かを定義するために必要なヘッダーファイルを追加しました。私はこれまで何度もこの関数を使用しましたが、このコンテキストでは使用していません。

テンプレート関数が未定義のクラステンプレート(特殊化されていない?)内で完全に定義されている(特殊化されている?)という事実をコンパイラーが気に入らないのではないかと思います。テンプレートを「特殊化」するものを完全に理解しているわけではありません。ほとんどの説明は「完全」または「部分的」の概念に焦点を当てていますが、そもそもそれを専門にするものではありません。

より多くのコードを見たい場合はお詫びします。私は職場でインターネットにアクセスできず、そこでこれを行っているので、すべてを精神的な「スクラッチパッド」に入れて家に持ち帰る必要があります。

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

c++ - あいまいなテンプレートの奇妙さ

私は次のコードを持っています(大きなコードチャンクで申し訳ありませんが、これ以上絞り込むことはできませんでした)

しかし、gcc (v4.3) でのコンパイルに失敗します。

OK、あいまいです。しかし、特殊化を使用する場合、ほとんどの場合あいまいになるため、それが問題になるとは思っていませんでした。ただし、このエラーはクラスをenable_if<...>で使用した場合にのみトリガーされます。次のようなクラスに置き換えれば問題ありません。

このクラスはあいまいさを引き起こさないのに、他のクラスはなぜあいまいさを引き起こさないのですか? 真の::値を持つクラスの場合、2つは同じことではありませんか? とにかく、私が間違っていることについてのヒントは大歓迎です。

答えてくれてありがとう、私の本当の問題(コンパイラに最初の専門分野を選択させるため)は、私が望むように動作するように見えるものを置き換えるstruct Foo<X, Base<X>, void>ことで解決されましstruct Foo<X, Base<X>, typename enable_if< Base<X> >::type >た。

0 投票する
4 に答える
907 参照

c++ - C++ テンプレート化されたコンテナ クラス: 順序付けされたアイテム タイプと順序付けられていないアイテム タイプの両方を最適にサポートするにはどうすればよいですか?

オプションでコンテンツを適切に定義された順序で維持できる、テンプレート化された C++ 汎用コンテナー クラスを作成しています。以前は関数ポインターを使用して、適切な型固有の方法で内容を並べ替えていましたが、代わりにテンプレート化されたファンクター引数を使用するように変更しようとしています。

クラスのユーザーが同じタイプの項目を異なるコンテナーで異なる方法でソートしたままにしたい場合がよくあるため、コンテナー クラスは、ユーザーがオプションで独自の比較ファンクターを指定できるようにするオプションのテンプレート引数を取ります。

クラス ユーザーがカスタム ファンクター タイプを指定しない場合、デフォルトで次の CompareFunctor 定義が使用されます。

これは、組み込み型と、より小演算子が定義されているユーザー定義型でうまく機能します。ただし、組み込みまたは明示的に定義された小なり演算子がないタイプでも自動的に機能するようにしたいと思います。これらのタイプの場合、コンテナー内の項目の順序は重要ではありません。

動機は、私がこのコンテナーを使用して多くの異なる型を保持することです。ほとんどの場合、コンテナー内の型の順序は気にしませんが、場合によっては気にします...そして私は気にしません'このコンテナー クラスで使用できるように、これらのさまざまな型すべてに「ダミーの」小なり演算子を追加する必要はありません...そして、カスタムの「ダミー」を明示的に指定する必要はありません。 「より小さい演算子を持たない項目を格納するためにテーブルを使用するたびに、CompareFunctor 引数。

したがって、可能な限りデフォルトの CompareFunctor (上記) が使用されるようにテンプレートの特殊化 (または何か) を使用できる方法はありますが、CompareFunctor がエラーを引き起こす場合、C++ は自動的に「ダミー」にフォールバックします。下のような FallbackCompareFunctor ?それとも、このジレンマを処理するための他の賢い方法はありますか?

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

c++ - ポインターを参照する関数テンプレートの特殊化

テンプレート機能があります:

一連のタイプに特化したい:

それは正常に動作します。これをコンパイルすると:

エラーが発生します:

char*型定義せずにポインター型パラメーターで特殊化することは可能ですか?

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

c++ - テンプレートクラスのテンプレート特化

次のメンバー関数を特化したい:

barテンプレートに依存する他のクラスにも。

たとえば、次のようないくつかのテンプレート パラメーターを使用したいbarと考えています。std::pair

T1 と T2 もテンプレートです。これはどのように行うことができますか?私の知る限り、それは可能なはずです。

だから今私は呼び出すことができます:

完全/最終的な答え:

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

c++ - 特定メンバーのテンプレート特化?

テンプレート クラスの特定のメンバーを特殊化することは可能ですか? 何かのようなもの:

もちろん、このコードは無効です。