template <class Iter, class T> T sum(Iter first, Iter last)
{
return std::accumulate(first, last, 0.0);
}
// Not compiled...
const double b = sum(v.begin(), v.end());
// Compiled
const double b = sum<std::vector<double>::const_iterator, double>(v.begin(), v.end());
我想编写一个计算容器总和的通用模板函数。我希望在不指定模板参数的情况下实现这一点。在我的尝试中,我不得不定义两个丑陋的参数。我怎样才能写出一个干净的代码?如果编译器不能完成这项工作,这个函数就毫无意义了。无法推断模板参数 - 通用函数
使用的Visual Studio 2013
哪个版本的C++是这样的? – matsjoyce 2014-10-29 14:19:47
Visual Studio 2013 – SmallChess 2014-10-29 14:20:05
无法推导出返回类型“T”。你想'双'或'std :: iterator_traits :: value_type' –
Jarod42
2014-10-29 14:20:47