我想知道這些(如果有的話)中的哪一個將是首選。變量函數模板基礎案例:不帶參數或帶有一個?
例如,我正在實現一個採用任意數量參數的sum函數。主模板是再
template <typename T, typename... Ts>
auto sum(T t, Ts... ts)
{
return t + sum(ts...);
}
對於基本情況下,我可以看到至少兩個選項:
基例是總和():
auto sum() { return 0; }
基本情況是總和(T):
template <typename T> auto sum(T t) { return t; }
在這種情況下,這兩種方式似乎都以相同的方式工作,但哪種方式通常更受歡迎?
我認爲第二種情況是更好因爲第一個添加一個沒有參數的操作 –
嘗試兩者並測量。您可能會發現,優化後他們最終會得到相同的程序集。 – TartanLlama
我會使用第一個,因爲有一天您可能會在其他代碼中實際使用零參數的版本。 – Petr