作为练习,我正在编写一个全局函数模板,该模板接受一个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'
我不明白为什么我收到此错误消息。