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

c++ - 特殊なテンプレート クラスの静的メンバーの初期化

GCC 4.1 でコンパイルされますが、リンクされません。

配列は型に固有のデータを保持するため、可能であれば初期化を特化したままにしたいと思います。

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

c++ - 複数のクラスに特化した1つのテンプレート

テンプレート関数「foo」があるとしましょう。

私は特定のタイプに特化することができます、例えば

すべての組み込み数値型(int、float、doubleなど)に同じ特殊化を使用したい場合は、それらの行を何度も記述します。bodyを別の関数にスローできることは知っています。これを呼び出すだけで、すべてのスペシャライゼーションのbodyで呼び出されますが、すべてのタイプに対してこの「void foo(...」」を記述しないようにするとよいでしょう。このすべてのタイプにこの特殊化を使用したいことをコンパイラーに伝える可能性はありますか?

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

c++ - c ++テンプレート:メンバーの特殊化に関する問題

次のような任意のメンバーのセットを使用して任意のクラスを作成するテンプレート「AutoClass」を作成しようとしています。

これで、ワーキング「セット」メンバーを持つAutoClassができました。

そして、対応する「get」の実装で問題が発生し始めました。このアプローチはコンパイルされません:

<nothing, nothing, nothing, nothing, nothing, nothing>その上、私は専門化のためにgetを実装する必要があるようです。これを解決する方法について何かアイデアはありますか?

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

c++ - C++0x のラムダでのテンプレートの特殊化

C++0x の関数または関数オブジェクトの引数と型に関する情報を抽出できるようにする特性クラスを作成しました (gcc 4.5.0 でテスト済み)。一般的なケースでは、関数オブジェクトを処理します。

次に、グローバル スコープでプレーンな関数を特殊化します。

これは正常に機能し、関数をテンプレートまたは関数オブジェクトに渡すことができ、適切に機能します。

関数または関数オブジェクトを に渡す代わりにfoo、ラムダ式を渡したい場合はどうすればよいですか?

ここでの問題は、どちらの特殊化もfunction_traits<>当てはまらないことです。C++0x ドラフトでは、式の型は「一意で名前のない非共用体クラス型」であると述べています。式を呼び出した結果をデマングリングすると、構文的に C++ 型名を表すものではなくtypeid(...).name()、ラムダに対する gcc の内部命名規則のように見えるものが得られます。main::{lambda(int)#1}

要するに、ここのテンプレートに入れることができるものはありますか:

この特性クラスがラムダ式を受け入れることを許可しますか?

0 投票する
7 に答える
1019 参照

c++ - テンプレートの特殊化を使用して new から new[] を分離する方法はありますか?

自動ポインター クラスがあり、コンストラクターでポインターを渡しています。デストラクタで delete または delete[] を適切に呼び出せるように、コンストラクタで new と new[] を分離できるようにしたいと考えています。これは、テンプレートの特殊化を通じて行うことができますか? コンストラクターでブール値を渡す必要はありません。

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

c++ - これは関数テンプレートの特殊化を完全に模倣していますか?

次のコードの関数テンプレートはクラス テンプレートのメンバーであるため、外側のクラスを特殊化せずに特殊化することはできません。

しかし、コンパイラの完全な最適化がオンになっている場合 (Visual Studio 2010 を想定)、次のコードの if-else ステートメントは最適化されますか? もしそうなら、それはすべての実用的な目的のために、これはパフォーマンスコストのない関数テンプレートの特殊化であることを意味しませんか?

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

database-design - クラステーブル継承と非正規化

クラステーブル継承の使用に傾倒して、特殊化/一般化をモデル化しようとしています(この回答を参照)。

ただし、同じテーブルに重複するスペシャライゼーションが多数(50以上)あるため、私の同僚にはメンテナンスとパフォーマンスの問題があります。彼の提案は、次の列を持つテーブルを作成することです。

  • 一般的な表への参照
  • 専門分野のタイプを維持するテーブルへの参照
  • 属性値を維持するテーブルへの参照

これにより、すべての属性が1つのテーブルに保持され、特殊化列でフィルタリングできます。このデザインが何と呼ばれているのかわかりませんが、どういうわけかEAVに関係しているのではないかと心配しています...

私の主な関心事は変更の異常ですが、それ以外にそれが悪い考えである理由はわかりません。1つのソリューションが他のソリューションよりも明らかに優れているのでしょうか、それとも1つを選んで先に進むべきでしょうか?

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

c++ - クラステンプレートコンストラクターの専門化

テンプレートの特殊化をいじっていて、使用されているポリシーに基づいてコンストラクターを特殊化しようとすると問題が発生しました。これが私が動かそうとしているコードです。

... \ main.cpp(29):エラーC3860:クラステンプレート名に続くテンプレート引数リストは、テンプレートパラメータリストで使用される順序でパラメータをリストする必要があります... \ main.cpp(29):エラーC2976:'Die':テンプレート引数が少なすぎます...\main.cpp(31):エラーC3860:クラステンプレート名に続くテンプレート引数リストは、テンプレートパラメータリストで使用されている順序でパラメータをリストする必要があります

これらは、Microsoft Visual Studio 2010で発生するエラーです。専門分野の正しい構文がわからないか、この方法ではできないのではないかと考えています。

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

c++ - std :: basic_string完全な特殊化(g ++の競合)

ヘッダーstd::basic_string< char, char_traits<char>, allocator<char> >によってtypedef(g ++)される完全な特殊化を定義しようとしています。<string>

問題は、最初に含めると<string>、g ++はtypedefをのインスタンス化と見なし、basic_stringエラーを表示することです。私が最初に専門分野を行う場合、問題はありません。

含まれた後、自分の専門分野を定義できるはず<string>です。それを可能にするために私は何をしなければなりませんか?

私のコード:

上記のコードは正常に機能します。ただし、最初の#include <string>行のコメントを外すと、次のコンパイラエラーが発生します。

の52行目/usr/include/c++/4.4/bits/stringfwd.h

私の知る限り、これはテンプレートの単なる前方へのデカレーションであり、g++が主張するようなインスタンス化ではありません。

の56行目/usr/include/c++/4.4/bits/stringfwd.h

私の知る限り、これは単なるtypedefであり、インスタンス化でもありません。

では、なぜこれらの行が私のコードと競合しているのですか?コードが常に前に含まれていることを確認する以外に、これを修正するにはどうすればよい<string>ですか?

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

inheritance - UML でアクターの特殊化一般化 (継承) を指定する手段はありますか?

私はUMLを使い始めたばかりで、次の質問に行き着きました:

一部のアクターは明らかに、自然界の実体の特殊化されたバージョンです。たとえば、明らかにユーザーの役割が異なる管理者アクターとユーザー アクター、サービスであるオーソライザーとディスパッチャーがあります (この方法で実装されます)。アクターとユースケースをモデル化する際にこれらの事実を無視するか、何らかの方法で指定する必要がありますか? コード生成を容易にするために、このような仕様をうまく利用できると思います。