std :: transform () и toupper (), нет соответствующей функции

Я пробовал код из этого вопроса C ++ std :: transform () и toupper () .. почему это не удается?

#include 
#include 

int main() {
  std::string s="hello";
  std::string out;
  std::transform(s.begin(), s.end(), std::back_inserter(out), std::toupper);
  std::cout << "hello in upper case: " << out << std::endl;
}

Теоретически все должно было работать так же примеров из книги Джосуттиса, но он не компилируется http://ideone.com/aYnfv .

Почему GCC жаловался:

no matching function for call to ‘transform(
    __gnu_cxx::__normal_iterator, std::allocator > >, 
    __gnu_cxx::__normal_iterator, std::allocator > >, 
    std::back_insert_iterator, std::allocator > >,
    )’

Я что-то здесь упускаю? Это проблема, связанная с GCC?

57
задан Community 23 May 2017 в 12:26
поделиться