我想這樣做:
func(conditionA?pa1:pa2,conditionB?pb1:pb2,conditionC?pc1:pc2);C++模板可以爲條件來改善代碼嗎?
在C風格功能中,沒有問題。但是,如果func()是一個模板函數,編譯器會報告錯誤。 這裏pa1和pa2,...是不同的類,並有一個靜態方法 - 「convert()」。考慮到性能,convert()也被聲明爲inline。
如果模板無法解決這個問題,將會有一個非常looooooooooong if-else如下所示。
if (conditionA) { typeA1 a; if (conditionB) { typeB1 b; if (conditonC) { C1 c; Function(a, b, c); } else { C2 c; Function(a, b, c); } } else { typeB2 b; if (conditonC) { C1 c; Function(a, b, c); } else { C2 c; Function(a, b, c); } } } else { typeA2 a; if (conditionB) { typeB1 b; if (conditonC) { C1 c; Function(a, b, c); } else { C2 c; Function(a, b, c); } } else { typeB2 b; if (conditonC) { C1 c; Function(a, b, c); } else { C2 c; Function(a, b, c); } } }
的條件是編譯時間常數? – 2009-01-09 03:10:20