fork download
  1. // Example program
  2. #include <iostream>
  3. #include <string>
  4.  
  5. #include <map>
  6.  
  7. template<typename Key, typename Value>
  8. class my_multimap : public std::multimap<Key, Value>
  9. {
  10. public:
  11. using Base = std::multimap<Key, Value>;
  12. using std::multimap<Key, Value>::multimap; // вытащили конструкторы
  13. using value_type = typename Base::value_type;
  14.  
  15. // далее примерный код
  16. bool insert(const value_type& val)
  17. {
  18. std::cout << "my_multimap::insert(copy)\n";
  19. if (true /* какая-то проверка */)
  20. return false;
  21.  
  22. Base::insert(val);
  23. return true;
  24. }
  25.  
  26. // для перемещения
  27. bool insert(value_type&& val)
  28. {
  29. std::cout << "my_multimap::insert(move)\n";
  30. if (true /* какая-то проверка */)
  31. return false;
  32.  
  33. Base::insert(std::forward<value_type>(val));
  34. return true;
  35. }
  36.  
  37. //using Base::insert; // вытащили другие методы insert
  38.  
  39. // А ещё поглядеть на перегрузки других методов insert:
  40. // http://w...content-available-to-author-only...s.com/reference/map/multimap/insert/
  41. };
  42.  
  43. int main()
  44. {
  45. my_multimap<int, int> my_map;
  46. my_map.insert(std::make_pair(31337,31337));
  47. std::cout << std::flush;
  48. }
  49.  
Success #stdin #stdout 0s 3460KB
stdin
Standard input is empty
stdout
my_multimap::insert(move)