我想知道这些(如果有的话)中的哪一个将是首选。变量函数模板基础案例:不带参数或带有一个?
例如,我正在实现一个采用任意数量参数的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