有沒有辦法創建一個類模板,它可以將自己作爲模板參數進行實例化?創建一個類模板,可以把自己創建的類作爲參數
我想可以說在我的代碼的東西這樣的:
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()
。最後的目標是通過調用這些函子在運行時執行這些算術運算。
'Operation'不是一個類,所以它不能用於模板類型參數。 'Operation'是一個模板類,所以它可以用來代替模板模板類型參數。 '操作'是一個類,可以用來代替模板類型參數。 –
bolov
您是否想要構建壓制模板?如果您可能想查看['boost :: proto'](http://www.boost.org/doc/libs/1_65_1/doc/html/proto.html)能爲您做些什麼。 – NathanOliver
@NathanOliver看起來像這實際上是我想要做的,只是更普遍和充實。感謝您的資源! – stimulate