Get the error error: passing 'const std::map<int, int>' as 'this' argument discards qualifiers [-fpermissive]
when codes below work.
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <map>
using namespace std;
int main() {
std::map<int, int> test_map;
std::vector<int> test_vec({0,1,2,3});
test_map[0] = 1;
test_map[1] = 2;
for_each(test_vec.begin(), test_vec.end(), [test_map](auto i) {
if (test_map.find(i) != test_map.end()) {
test_map[i] += 10;
}
});
return 0;
}
In lambda capture list, test_map is a non-const container, but it become const in the lambda body. why?