我正在尝试重载 Sum 函数,该函数接受 [list or vector] 开始和结束迭代器作为参数。这个编译器错误真的让我很困惑。相关代码如下:
template <typename T1, typename T2>
const double Sum(const typename T1::const_iterator& start_iter, const typename T2::const_iterator& end_iter)
{// overloaded function that calculates sum between two iterators
typename T1::const_iterator iterator_begin = start_iter;
typename T2::const_iterator iterator_end = end_iter;
double my_sum = 0;
for (iterator_begin; iterator_begin != iterator_end; iterator_begin++)
my_sum += *iterator_begin;
return my_sum;
}
int main()
{
list<double> test_list(10,5.1);
cout << Sum(test_list.begin(), test_list.end()); // compiler errors here
}
我收到以下编译器错误:
iterators.cpp(72): 错误 C2783: 'const double Sum(const T1::const_iterator &,const T2::const_iterator &)' : 无法推导出 'T1' 的模板参数
iterators.cpp(72): error C2783: 'const double Sum(const T1::const_iterator &,const T2::const_iterator &)' : 无法推断出'T2'的模板参数
iterators.cpp(72): 错误 C2780: 'const double Sum(const std::map &)' : 需要 1 个参数 - 提供 2 个
iterators.cpp(72): error C2780: 'const double Sum(const T &)' : 需要 1 个参数 - 提供 2 个
编译器如何无法识别我正在尝试使用两个输入调用 Sum 函数?我错误地调用了该函数?
谢谢!