编写模板函数的形式是什么(如果有的话),其中参数是模板容器?
例如,我想编写一个通用总和,它适用于任何可以迭代的容器。鉴于下面的代码,我必须编写例如sum<int>(myInts)
。我宁愿只写sum(myInts)
和从 myInts 包含的类型推断的类型。
/**
@brief Summation for iterable containers of numerical type
@tparam cN Numerical type (that can be summed)
@param[in] container container containing the values, e.g. a vector of doubles
@param[out] total The sum (i.e. total)
*/
template<typename N, typename cN>
N sum(cN container) {
N total;
for (N& value : container) {
total += value;
}
return total;
}