テンプレート引数としてインスタンス化できるクラステンプレートを作成する方法はありますか?自分自身で作成したクラスを引数として取るクラステンプレートを作成する
私は私のコードでは、この何かを言うことができるようにしたいと思います:
Operation<float> op1(0.3f);
Operation<float, Operation> op2(0.5f, op1);
私は無限ループで終わる避けるために、可変引数テンプレートパラメータを持つようなクラスのテンプレートを定義しようとした(テンプレートを持っているでしょうテンプレートパラメータをとるテンプレートテンプレートパラメータを定義します。テンプレートパラメータ自体もテンプレートパラメータをとる必要があります。
template<typename T, typename... OP>
class Operation{
Operation(T pVal, OP... pOP);
...
};
typename... OP
はOperation<T>
あるいはOperation<T, Operation<T>>
が、これは可能ですが取ることができるでしょうか?
コンテキスト:私は、算術「連鎖反応」を形成するために組み合わせることができるポリシーベースのファンクタを構築しようとしています。ある操作では、Function
ポリシークラスを使用して何をすべきかを判断し、2つのSourceオブジェクトを引数として取ります。ソースオブジェクトは、Function
ポリシーまたはその他のOperation
のいずれかであり、これらの両方が関数T execute()
を定義します。最終的な目標は、これらのファンクタを呼び出すことによって実行時にこれらの算術演算をコマンドで実行することです。
'Operation'はクラスではないので、テンプレート型の引数には使用できません。 'Operation'はテンプレートクラスであるため、テンプレートテンプレート型パラメータの代わりに使用できます。 'Operation'はクラスであり、テンプレート型の引数の代わりに使うことができます。 –
bolov
抑制テンプレートを作成しようとしていますか?もしあなたがそうであれば、 '' boost :: proto'(http://www.boost.org/doc/libs/1_65_1/doc/html/proto.html)があなたのために何をすることができるのか調べたいかもしれません。 – NathanOliver
@ NathanOliverは、これが実際に私がやろうとしていることであり、より一般的なものでしかありません。リソースをありがとう! – stimulate