此問題是this one之後的後續操作。實際問題是,如this list所示,Visual Studio 2012不支持功能模板的默認模板參數。Visual Studios 2012中的默認模板參數
由於默認模板參數不被視覺工作室2012的支持,有沒有什麼解決辦法有沒有它同樣的結果?那麼是否可以定義模板函數,如
template <typename T, typename Ret = T>
Ret round(T val, Ret ret = Ret()) {
return static_cast<Ret>(
(val >= 0) ?
floor(val + (T)(.5)) :
ceil(val - (T)(.5))
);
}
不使用默認模板參數?該功能可以作爲
auto a = round(5.5, int()); // int a = 6
auto b = round(5.5); // double b = 6.0
您可以隨時添加一個過載,例如'模板 T輪(T val);' –
dyp
@dyp:已更正。謝謝。過載確實有效。我之前在鏈接問題中的例子讓我感到困惑。這不是一個聰明的問題...... – Didii
難道你不希望四捨五入默認爲你分配的任何類型而不是輸入類型嗎? – Yakk