fork download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <functional>
  4. #include <map>
  5. #include <string>
  6. #include <vector>
  7.  
  8. int main()
  9. {
  10. using namespace std::placeholders;
  11.  
  12. std::map<std::string, int> karta;
  13. std::vector<std::string> goroda{ "foo", "bar", "foo" };
  14.  
  15. std::for_each(goroda.begin(), goroda.end(), std::bind(
  16. static_cast<
  17. std::pair<decltype(karta)::iterator, bool>
  18. (decltype(karta)::*)(const decltype(karta)::key_type&, decltype(karta)::mapped_type&&)>
  19. (&decltype(karta)::insert_or_assign),
  20. std::ref(karta),
  21. _1,
  22. std::bind(
  23. std::plus<decltype(karta)::mapped_type>(),
  24. 1,
  25. std::bind(
  26. static_cast<decltype(karta)::mapped_type&(decltype(karta)::*)(const decltype(karta)::key_type &)>
  27. (&decltype(karta)::operator[]),
  28. std::ref(karta),
  29. _1))
  30. ));
  31. std::cout << "foo: " << karta["foo"] << "\nbar: " << karta["bar"] << '\n';
  32.  
  33. return EXIT_SUCCESS;
  34. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:19:19: error: ‘insert_or_assign’ is not a member of ‘std::map<std::__cxx11::basic_string<char>, int>’
                 (&decltype(karta)::insert_or_assign),
                   ^~~~~~~~
stdout
Standard output is empty