将特定类型的迭代器传递给模板函数

时间:2018-08-31 14:50:13

标签: c++ templates c++-standard-library

作为练习,我正在编写一个全局函数模板,该模板接受一个std::map迭代器并计算其元素的总和。

template <typename M>
double sum(typename std::map<M, double>::const_iterator start, typename std::map<M, double>::const_iterator end) {

    double sum = 0.0;
    for( ; start != end ; start++) sum += (start -> second);

    return sum;
}

main()函数:

int main() {

std::map<std::string, double> string_double_map;
string_double_map.insert(std::pair("Hello", 1));
string_double_map.insert(std::pair("World", 2));

std::cout << sum(string_double_map) << std::endl;

std::map<std::string, double>::const_iterator start = string_double_map.begin();
std::map<std::string, double>::const_iterator end = string_double_map.end();

std::cout << sum(start, end) << std::endl;


return 0;
}
  

错误消息:模板参数推导/替换失败:无法推断模板参数'M'

我不明白为什么我收到此错误消息。

0 个答案:

没有答案