Почему невозможно «transform (s.begin (), s.end (), s.begin ( ), tolower) »?

Учитывая код:

#include <iostream>
#include <cctype>
#include <string>
#include <algorithm>
using namespace std;

int main()
{
     string s("ABCDEFGHIJKL");
     transform(s.begin(),s.end(),s.begin(),tolower);
     cout<<s<<endl;
}

Я получаю сообщение об ошибке:

Нет соответствующей функции для вызова transform (__ gnu_cxx :: __ normal_iterator , std :: allocator >>, __gnu_cxx :: __ normal_iterator , std :: allocator > >, __gnu_cxx :: __ normal_iterator , std :: allocator >>, <неразрешенный тип перегруженной функции>)

Что делает «неразрешенный тип перегруженной функции» означает?

Если я заменю tolower функцией, которую я написал, она больше не будет ошибкой.

28
задан Jonathan Mee 3 June 2016 в 12:46
поделиться