【发布时间】:2009-01-09 03:06:54
【问题描述】:
我想这样做:
func(conditionA ? pa1 : pa2, conditionB ? pb1 : pb2, conditionC ? pc1 : pc2);
在C风格的函数中,没有问题。但是如果 func() 是模板函数,编译器会报错。 这里 pa1 和 pa2, ... 是不同的类,并且有一个 static 方法 - “convert()”。出于性能考虑,convert() 也被声明为 inline。
如果模板不能解决这个问题,就会有一个非常糟糕的 if-else 如下所示。
如果(条件A) { A1型; 如果(条件B) { B1 b 型; 如果(条件C) { C1 c; 函数(a,b,c); } 别的 { C2c; 函数(a,b,c); } } 别的 { B2 b 型; 如果(条件C) { C1 c; 函数(a,b,c); } 别的 { C2c; 函数(a,b,c); } } } 别的 { A2型; 如果(条件B) { B1 b 型; 如果(条件C) { C1 c; 函数(a,b,c); } 别的 { C2c; 函数(a,b,c); } } 别的 { B2 b 型; 如果(条件C) { C1 c; 函数(a,b,c); } 别的 { C2c; 函数(a,b,c); } } }【问题讨论】:
-
条件是编译时间常数吗?
-
您在 cmets 中提到了“convert()”,但代码中没有。你能澄清一下吗?