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