fork(1) download
  1. #include <iostream>
  2. #include <string>
  3. #include <map>
  4. #include <functional>
  5.  
  6.  
  7. struct assoc_find_type {
  8.  
  9. template<typename AssocContainer>
  10. typename AssocContainer::iterator
  11. operator ()(AssocContainer & container, typename AssocContainer::key_type const& key) const {
  12. return container.find(key);
  13. }
  14.  
  15. template<typename AssocContainer>
  16. typename AssocContainer::const_iterator
  17. operator ()(AssocContainer const& container, typename AssocContainer::key_type const& key) const {
  18. return container.find(key);
  19. }
  20. };
  21.  
  22. constexpr assoc_find_type assoc_find;
  23.  
  24.  
  25. int main()
  26. {
  27. using map_t = std::map<std::string, int>;
  28. map_t map { {"A", 10}, {"B", 11}, {"C", 12}, {"D", 13}, {"E", 14}, {"F", 15} };
  29.  
  30. auto f = std::bind(assoc_find, std::ref(map), std::placeholders::_1);
  31. f("A")->second = 42;
  32.  
  33. auto u = std::bind(assoc_find, std::cref(map), std::placeholders::_1);
  34. std::cout << u("A")->second << std::endl;
  35.  
  36. return 0;
  37. }
Success #stdin #stdout 0s 3432KB
stdin
Standard input is empty
stdout
42