有没有办法创建一个可以将自身实例化作为模板参数的类模板?
我希望能够在我的代码中这样说:
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
策略类来确定它应该做什么,它还将使用两个 Source 对象作为参数。源对象可能是Function
策略或其他对象Operation
,因为这两者都定义了函数T execute()
。最终目标是通过调用这些函子在运行时根据命令执行这些算术运算。