2
template <typename IN,typename OUT,bool isVector>
OUT foo(IN x){
if (isVector){
return x[0];
} else {
return x;
}
}
在询问this question之后,我错误地认为上述代码可以编译为例如。如何修复此模板:
foo<double,double,false>;
以及
foo<std::vector<double>,double,true>;
然而,即使如果支行从未得到执行的一个,检查的正确性,因此上面没有编译。我该如何解决它?
上面的代码是一个简化,但我不知道如何解决它,因为函数模板不能有偏特...
看起来不错,我会尝试 – user463035818
我更喜欢第一个解决方案,第二个看起来像C++ 11,我不能使用不幸的。然而,从模板类“A”调用函数时,我无法运行它,并且我传递的模板参数(代码中的“In”)是“A”的模板参数。任何想法,为什么这可能是?我将尝试将其制作成MCVE ... – user463035818
不编译的MCVE:http://ideone.com/NQwfyA – user463035818