【发布时间】:2014-03-26 10:55:24
【问题描述】:
采用以下可以正常工作的简单模板函数:
template<typename T>
double Average(T tArray[], int nElements)
{
T tSum = T(); // tSum = 0
for (int nIndex = 0; nIndex < nElements; ++nIndex)
{
tSum += tArray[nIndex];
}
return double(tSum) / nElements;
}
我已将第一行更改为T tSum(),它没有被编译,因为编译器认为 tSum 是一个函数,不能在 for 循环中的 + 运算符中使用。您能告诉我以下这些泛型类型的初始化有什么区别吗?
- 类型 var = Type();
- 类型 var();
考虑到int var() 和int var = int() 是相同的,我认为可以替换这些行!
【问题讨论】:
-
你可以添加一个
int... P模板参数,然后你可以写int var (P...);。
标签: c++ most-vexing-parse