問題タブ [template-variables]
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++ - テンプレート変数をオーバーロードできますか?
私はこのようなものを宣言したい:
しかし、しようとすると、このエラーが発生します:
エラー:
template<class T> constexpr std::enable_if_t<std::is_floating_point<_Tp>::value, int []> foo
注の再宣言: 以前の宣言template<class T> constexpr std::enable_if_t<std::is_integral<_Tp>::value, int []> foo<T>
foo
特定のテンプレート引数に対して複数の定義が定義されることは決してないため、これは合法であるべきだと思います。コンパイラがこれを理解できるようにするためにできることはありますか?
c++ - Visual Studio のテンプレート化された関数ポインター配列
Guillaume Racicotは、テンプレート変数をどのように特殊化できるかについて、この質問に対して優れた回答を提供しました。しかし、Visual Studio 2017でテンプレート化された関数ポインターの配列を作成する際に問題が発生しています。たとえば、このコード:
1
2
3
しかし、visual-studio-2017では出力のみ:
1
2
これを回避するためにできることはありますか?
c++ - 適切に使用するために変数テンプレートとテンプレート エイリアスを理解しようとする
以前、次の 2 つの質問をしました。
私の質問は、私のクラスである最初の質問で提供されたクラスに関するものですSignal
。
クラス内で伝えようとしている考えは、このクラスをテンプレートにしたくないということです。ただし、「時間」関連の変数を保存する必要がありますが、これを保存するには2つの方法があります。整数型: "Discrete" または浮動小数点型: "Continuous" として。
テンプレートのエイリアシングを使用してコードを簡素化することを考えていました。コードからわかるように:
テンプレートエイリアスの使用について私が考えていた方法です。
次に、非テンプレート クラス自体内。
テンプレート変数を Signal のメンバーとして持っています。テンプレート変数を持つためには、静的でなければなりません。クラスをテストする目的で、現在、そのコンストラクターを使用して何かをインスタンス化し、この変数に格納しています。
この変数へのアクセスに関しては、2 つの選択肢があります。スコープ解決演算子を使用して静的関数を介してアクセスするか、オブジェクトの非静的メンバー関数を介してアクセスできます。
クラスが正しくコンパイルおよびビルドされるようにするには、このコード行を、それを使用している他の CPP ファイルのクラス外で定義する必要があります。
変数は静的メンバーであるため、これは理解できます。
これにより、私のクラスの現在の構造の背景がわかります。さらに追加を続ける前に、このコード設計について知っておきたいことがいくつかあります。
最初の簡単な質問は次のとおりです。私のコードをそのままにしておくかどうか。これは、変数を取得するための推奨される方法です。
次の質問は、設計上の決定全体に影響するため、前の質問よりも少し重要です...
この種の状況でのテンプレートのエイリアシングに関する私の推論は正しいですか、私の当初の考えや意図は次のとおりです。
クラス内の変数テンプレートを astd::uint64_t
または aにしたいのですdouble
が、上記の名前を使用して、基になる型を typedef であるかのように表現したいDiscreteTime
と考えています。ContinousTime
そうでない場合は、他の可能な実装を見たいと思います。