Я новичок в использовании шаблонов С++. Мне нужно написать специализацию функции шаблона для моего проекта. Это простая функция Sum для входных данных разных типов, которая вычисляет сумму между двумя итераторами. Исходная функция является универсальной и поэтому принимает аргумент шаблона. Специализация шаблона написана для Карт.
#include <map>
#include <string>
template <typename T>
double Sum(T &it_beg, T &it_end) {
double sum_all = 0;
for(it_beg++; it_beg != it_end; it_beg++)
sum_all += *it_beg;
return sum_all;
};
template <>
double Sum(std::map<std::string, double> &it_beg, std::map<std::string, double> &it_end) {
double sum_all = 0;
for(it_beg++; it_beg != it_end; it_beg++)
sum_all += it_beg->second;
return sum_all;
};
когда я пытаюсь запустить код, я получаю следующие ошибки
...\sum.h(21): error C2676: binary '++' : 'std::map<_Kty,_Ty>' does not define this operator or a conversion to a type acceptable to the predefined operator
1> with
1> [
1> _Kty=std::string,
1> _Ty=double
1> ]
Я ценю, если кто-нибудь может дать мне подсказку! Благодарность