問題タブ [template-aliases]
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++ - 適切に使用するために変数テンプレートとテンプレート エイリアスを理解しようとする
以前、次の 2 つの質問をしました。
私の質問は、私のクラスである最初の質問で提供されたクラスに関するものですSignal
。
クラス内で伝えようとしている考えは、このクラスをテンプレートにしたくないということです。ただし、「時間」関連の変数を保存する必要がありますが、これを保存するには2つの方法があります。整数型: "Discrete" または浮動小数点型: "Continuous" として。
テンプレートのエイリアシングを使用してコードを簡素化することを考えていました。コードからわかるように:
テンプレートエイリアスの使用について私が考えていた方法です。
次に、非テンプレート クラス自体内。
テンプレート変数を Signal のメンバーとして持っています。テンプレート変数を持つためには、静的でなければなりません。クラスをテストする目的で、現在、そのコンストラクターを使用して何かをインスタンス化し、この変数に格納しています。
この変数へのアクセスに関しては、2 つの選択肢があります。スコープ解決演算子を使用して静的関数を介してアクセスするか、オブジェクトの非静的メンバー関数を介してアクセスできます。
クラスが正しくコンパイルおよびビルドされるようにするには、このコード行を、それを使用している他の CPP ファイルのクラス外で定義する必要があります。
変数は静的メンバーであるため、これは理解できます。
これにより、私のクラスの現在の構造の背景がわかります。さらに追加を続ける前に、このコード設計について知っておきたいことがいくつかあります。
最初の簡単な質問は次のとおりです。私のコードをそのままにしておくかどうか。これは、変数を取得するための推奨される方法です。
次の質問は、設計上の決定全体に影響するため、前の質問よりも少し重要です...
この種の状況でのテンプレートのエイリアシングに関する私の推論は正しいですか、私の当初の考えや意図は次のとおりです。
クラス内の変数テンプレートを astd::uint64_t
または aにしたいのですdouble
が、上記の名前を使用して、基になる型を typedef であるかのように表現したいDiscreteTime
と考えています。ContinousTime
そうでない場合は、他の可能な実装を見たいと思います。
c++ - 関数内でテンプレート エイリアスをパラメータとして使用できず、自動的に推定できないのはなぜですか?
基になる型の代わりにテンプレート エイリアスを使用して、テンプレート関数を単純化しようとしていました。
ただし、コンパイラはパラメーターの T を推測できないため、呼び出し元はテンプレートの型を指定する必要があります。
関数パラメーターの型がstd::basic_string<T, Traits, Allocator>
代わりに変更された場合、呼び出し元はテンプレート パラメーターを指定しなくてString
も簡単に呼び出すことができます。make_vector_from_string(bar);
何故ですか?