Как применить преобразование к карте STL в C ++

В C ++ я использую преобразование для изменения всех значений карты на верхний регистр.

  std::map<std::string, std::string> data = getData();

  // make all values uppercase
  std::transform(data.begin(), data.end(), data.begin(),
         [](std::pair<std::string, std::string>& p) {
           boost::to_upper(p.second);
           return(p);
         });

Это дает мне следующее ошибка компиляции:

/opt/local/include/gcc46/c++/bits/stl_algo.h:4805:2: error: no match for call to '(main(int, char**)::<lambda(std::pair<std::basic_string<char>, std::basic_string<char> >&)>) (std::pair<const std::basic_string<char>, std::basic_string<char> >&)

Я думаю, что что-то не так с типом аргумента в моем лямбда-выражении. Вероятно, это что-то простое, но я не могу понять, что от него ожидается.

20
задан daj 24 October 2011 в 17:21
поделиться